我想知道是否可以进行 MATCH() AGAINST() (全文)搜索,使不直接相邻的单词需要按特定顺序排列?在我的网站上,当用户在双引号之间键入单词时,搜索将仅显示按特定顺序包含这些单词的结果。例如,如果这是搜索词:
"pizza road"
它将返回“The best Pizza down the road”,但不会返回“the road to the best Pizza”。
我知道 bool 模式将允许“短语”搜索,但这意味着单词需要彼此相邻(仅用空格、句点、逗号等分隔),这显然不会返回以下任何一个上面列出的结果:http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html
目前我正在使用 regexp 来执行此操作,但不用说,这是搜索 varchar 列(毫无意义的全文索引)的糟糕方法,即使它只有不到 200,000 行。所以我想知道是否可以仅使用 MATCH() AGAINST() 执行相同的搜索?或者我应该将它与正则表达式结合起来?或者还有其他我没有想到的方法吗?
我可以根据要求提供表格/代码示例。
提前致谢!
最佳答案
您是否尝试过类似的操作:
SELECT *
FROM `table`
WHERE MATCH(`first_column`)
AGAINST('+pizza +road' IN BOOLEAN MODE)
HAVING `first_column` LIKE '%pizza %road%'
关于具有特定词序的 MySQL 全文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6288753/