MySQL全文搜索在哪里

时间:2019-03-29 09:53:27

标签: mysql sql database mariadb

我正在尝试使用MySQL创建全文搜索。我的查询看起来像这样。

SELECT * FROM customers WHERE MATCH (name, first_name, street, city)
                              AGAINST ('$parameter' IN boolean MODE)

如果我查询例如Peter,则一切正常。但是,如果仅输入搜索字符串的开头(Pete),则会得到空结果。

如何获取包含我的字符串的行,而不仅仅是包含完全相同的行?

2 个答案:

答案 0 :(得分:1)

使用NATURAL LANGUAGE MODE

SELECT * FROM customers WHERE MATCH (name, first_name, street, city) AGAINST ('$parameter' IN NATURAL LANGUAGE MODE)

自然语言全文搜索将搜索字符串解释为自由文本(自然人类语言),并且不需要特殊的运算符。如果未指定IN NATURAL LANGUAGE MODE修饰符(请参见以下语法),则全文搜索是自然语言搜索。 MATCH()函数针对文本集合(FULLTEXT索引中包含的一组一个或多个列)搜索字符串。对于表中的每一行,MATCH()返回一个相关性值;也就是说,搜索字符串(作为AGAINST()函数的参数)与MATCH()列表中命名的列中该行文本之间的相似性度量

答案 1 :(得分:0)

MATCH (...) AGAINST ('$parameter*' IN BOOLEAN MODE)

MATCH (...) AGAINST ('Pete*' IN BOOLEAN MODE)

通配符*可以放在字符串的 end 处,以匹配以它开头的任何内容。那会匹配

Pete
Peter
petechiae
peteforamerica
petethecatbooks
péteux