【发布时间】:2012-08-15 23:51:37
【问题描述】:
我正在使用 Innodb 的 FTS 功能来搜索我的数据库并返回按相关性排序的结果。使用布尔模式时,必须将搜索字符串转换为必须用 +、~、-、* 等运算符分隔各个术语的形式。
如果我有一个包含多个单词的搜索字符串,我如何(可能使用 PHP)转换搜索字符串以便可以将其与 MATCH()... .AGAINST() 子句一起使用?
搜索词:
stack over flow
SQL 查询:
SELECT * FROM mytable WHERE
MATCH ( name, description)
AGAINST ('+*stack* +*over* +*flow*' IN BOOLEAN MODE);"
匹配结果
stack over flow
haystack hover flowers
【问题讨论】:
-
explode() 在空间上然后根据需要重建
-
布尔模式可以返回相关性分数吗?如果不是,自然语言模式是否返回相关性分数以及与搜索字符串中的顺序不同的短语?
-
'relevancy score" 可以。
标签: php mysql innodb full-text-search