我正在使用 PDO 执行 MATCH AGAINST 查询。
以下内容不返回任何内容:
SELECT title, author, isbn, MATCH(title, isbn) AGAINST (:term) AS score
FROM books
WHERE MATCH(title, isbn) AGAINST (:term)
ORDER BY score DESC LIMIT 0,10
完美返回的地方:
SELECT title, author, isbn, MATCH(title, isbn) AGAINST (:term) AS score
FROM books
WHERE MATCH(title, isbn) AGAINST (:term IN BOOLEAN MODE)
ORDER BY score DESC LIMIT 0,10
谁能告诉我为什么 IN BOOLEAN MODE 会产生如此大的差异,以及我是否应该在查询中使用它?
第二个查询作为“自然语言搜索”运行,因为这是未指定自然语言搜索类型时的默认设置。这种类型的搜索过滤器还会自动过滤掉 50% 或更多行中出现的单词。
“IN BOOLEAN MODE”确实会执行此附加过滤,因此,如果您正在搜索常用术语,则可能会返回匹配项。
是否应该使用布尔搜索取决于您的具体情况,如果没有更多信息就无法确定。但是,一些考虑因素可能包括输入数据集的大小与您想要返回的匹配数据集的大小以及是否要返回频繁出现的单词的结果。
(Ref: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)