我正在使用mysql中的全文搜索来搜索一个相当大的文章数据库,并且正在尝试使用带引号的字符串来解决这一问题。
基本上,当我搜索“约翰史密斯”被捕时,我希望它能归还那些有“约翰史密斯”和“逮捕”的文章,但不是只有“约翰”和“逮捕”的故事,绝对不是故事只有“逮捕”
全文搜索似乎不会同时尊重字符串中的引号和其他字词。
我试过了:
MATCH(headline,byline,body,keywords)
AGAINST('"John Smith" arrest' IN BOOLEAN MODE)
和
MATCH(headline,byline,body,keywords)
AGAINST('"John Smith" + arrest' IN BOOLEAN MODE)
只做这样的事情会没事吗?
MATCH(headline,byline,body,keywords)
AGAINST('John + Smith + arrest' IN BOOLEAN MODE)
这可能会成功,但不会完全准确。
感谢您的帮助。
答案 0 :(得分:2)
根据http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html,格式为:
'+"John Smith" +arrest'
答案 1 :(得分:2)
默认情况下,全文搜索使用OR组合术语。这意味着,在您的第一个示例中,您正在搜索带有“arrest”或“John Smith”短语的行。要要求返回的行包含两个术语,请使用加号运算符:
MATCH(headline,byline,body,keywords)
AGAINST('+"John Smith" +arrest' IN BOOLEAN MODE)
答案 2 :(得分:1)
我不确定"
和+
可以合并,但请尝试此
MATCH(headline,byline,body,keywords)
AGAINST('+"John Smith" +arrest' IN BOOLEAN MODE)
如果不起作用,那么这应该
WHERE
MATCH(headline,byline,body,keywords)
AGAINST('"John Smith"' IN BOOLEAN MODE)
AND
MATCH(headline,byline,body,keywords)
AGAINST('+arrest' IN BOOLEAN MODE)
docs http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html