MySQL Fulltext布尔模式搜索返回太多结果
我遇到了全文搜索查询的问题,并且我几乎浏览了所有可以找到的论坛和主题,但我仍然遇到此问题。
我正在使用MySQL全文布尔模式搜索来返回基于两列(艺术家名称和曲目标题)的匹配行。 用户可以在搜索栏中输入他们希望的任何短语,并且结果应该只是包含搜索查询的所有部分的行,其中的任何一列都是。
这是我迄今为止的查询,它适用于大多数查询,但对于一些查询返回的结果太松散,我不知道为什么。
SELECT * FROM tracks WHERE MATCH(artist, title) AGAINST('+paul +van +dyk ' IN BOOLEAN MODE)
然而,该查询返回包含Paul的行,而没有“Van”或“Dyk”。 同样,我希望查询只返回包含“艺术家”或“曲目名称”列中的所有关键字的行。
提前致谢
要增强布尔模式下结果的排序,您可以使用以下内容:
SELECT column_names, MATCH (text) AGAINST ('word1 word2 word3')
AS col1 FROM table1
WHERE MATCH (text) AGAINST ('+word1 +word2 +word3' in boolean mode)
order by col1 desc;
使用第一个 MATCH()
我们得到了非布尔搜索模式的分数(更具特色) 。 第二个 MATCH()
确保我们真的只能得到我们想要的结果(全部3个单词) 。
所以你的查询将会变成:
SELECT *, MATCH (artist, title) AGAINST ('paul van dyk')
AS score FROM tracks
WHERE MATCH (artist, title)
AGAINST ('+paul +van +dyk' in boolean mode)
order by score desc;
希望; 你现在会得到更好的结果。
如果它工作或不工作; 请告诉我。
捎带@艾维丹的答案。 这些是可以在全文搜索上执行的操作,以帮助创建您想要的查询。
以下示例演示了一些使用布尔全文操作符的搜索字符串:
'苹果香蕉'
查找至少包含其中一个单词的行。
'+苹果+果汁'
查找包含两个单词的行。
'+苹果麦金塔'
找到包含单词“apple”的行,但如果它们也包含“macintosh”,则排名更高的行。
'+苹果 - 麦金托什'
查找包含单词“apple”但不包含“macintosh”的行。
'+ apple〜macintosh'
查找包含单词“apple”的行,但如果该行还包含单词“macintosh”,则将其评估为低于行不包含的单词。 这比搜索'+ apple -macintosh'“更柔和”,因为“macintosh”的存在导致该行不被返回。
'+苹果+(营业额)
查找包含“苹果”和“营业额”,或“苹果”和“果馅奶酪卷”(以任何顺序)的单词的行,但将“苹果营业额”评为高于“苹果馅”。
'苹果*'
查找包含“apple”,“apples”,“applesauce”或“applet”等词的行。
'“一些单词”'
文档:https://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html
链接地址: http://www.djcxy.com/p/75293.html上一篇: MySQL Fulltext Boolean Mode search returns too many results