我想知道是否有可能以一种方式进行MATCH()AGAINST()(全文)搜索,这些搜索不是直接相邻的,需要按特定顺序排列?在我的网站上,当用户在双引号之间键入单词时,搜索将仅显示具有该特定顺序的单词的结果.例如,如果这是搜索词:

"pizza road"

它会回归’最好的披萨’,但不是’通往最佳披萨的道路’.

我知道BOOLEAN模式将允许“短语”搜索,但这意味着单词需要彼此相邻(仅用空格,句号,逗号等分隔),这显然不会返回列出的任何结果上图: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, regex, search, full-text-search

相关文章推荐

添加新评论,含*的栏目为必填