我需要帮助全文搜索mysql。 我正在找的书名为dreams。认识梦想 Mysql全文搜索忽略重复单词一次取词
- 印度梦想
- 梦想
- 其他书籍
其实我在寻找梦想 如何让第6本书成为第一本。
我想在这种情况下忽略重复的单词dreams。
您可以搜索here
我面对这些类型的不同标题的问题。
我需要帮助全文搜索mysql。 我正在找的书名为dreams。认识梦想 Mysql全文搜索忽略重复单词一次取词
其实我在寻找梦想 如何让第6本书成为第一本。
我想在这种情况下忽略重复的单词dreams。
您可以搜索here
我面对这些类型的不同标题的问题。
列反复搜索词的相关性是higest,我能看到的唯一的解决办法是用精确匹配做一个联合查询您的标准全文搜索例如:
SELECT * FROM books
WHERE title = 'Dreams'
UNION
SELECT * FROM books
WHERE MATCH(title) AGAINST("Dreams")
这将首先显示完全匹配。
,或者你可以
SELECT * FROM books
WHERE MATCH(title) AGAINST("Dreams")
ORDER BY (CASE WHEN title = 'Dreams' THEN 1 ELSE 0 END),.....
我只能建议正则表达式的用法: http://dev.mysql.com/doc/refman/5.1/en/regexp.html
你想要的确切情况是第一个建议吗?
为了尝试:
"ORDER BY ('{$str_search}' = title) DESC"
这将使搜索内容您搜索首先出现的确切情况。
2个解决方案:
"ORDER BY ('{$str_search}' LIKE title) DESC"
"ORDER BY ('{$str_search}%' LIKE title) DESC"
3解决方案可用于订购了所有在你的搜索词开始。
注意:该解决方案与CASE相同。
可能不再相关,但如果有人来看我会推荐使用顶部的levenshtein函数来解决这个问题。请参阅下面的信息,并全面实施在MySQL
你好,谢谢你的答案。这将有所帮助。问题在于性能。我们有1000万本书。我以前试过工会..它需要很长时间来执行搜索..有没有其他选择在单个查询.. –
加快平等检查工会,你可以添加一个标题的标准索引,解决方案时可能的情况可能尽管你是最好的选择。 –