Mysql全文搜索-如何要求所有搜索词

时间:2018-07-31 17:30:57

标签: mysql full-text-search

我有这个搜索查询:

SELECT id, MATCH(names) AGAINST('Tom Smith') AS score FROM content WHERE MATCH(names) AGAINST('Tom Smith') ORDER BY SCORE DESC

它返回246行,其中包含'Tom Smith', 'Tom (any initial) Smith', 'Tom' or 'Smith'

有没有一种方法让查询返回仅包含“汤姆·史密斯”,“汤姆·史密斯”,“汤姆·罗伯·史密斯”等的行?

基本上,必须包含Tom AND Smith的行,而不是仅包含“ Tom”或“ smith”的行吗?

但是,我不仅希望只包含“ Tom Smith”的行,而且还包含“ Tom(任何单词)Smith”的行也可以。

我想这是可能的,但是,我很难获得也包含“汤姆(任何单词)史密斯”标准的结果。

1 个答案:

答案 0 :(得分:0)

有时候,我的大脑不能很好地工作:)忘记了布尔模式

SELECT id, MATCH(names) AGAINST('+Tom +Smith' IN BOOLEAN MODE ) AS score FROM content WHERE MATCH(names) 
AGAINST('+Tom +Smith' IN BOOLEAN MODE ) ORDER BY SCORE DESC