mariadb MySQL全文搜索位置

thigvfpy  于 2022-11-08  发布在  Mysql
关注(0)|答案(2)|浏览(130)

我正在尝试用MySQL创建一个全文搜索。我的查询如下所示。

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

例如,如果我查询Peter,一切都很正常,但如果我只输入搜索字符串的开头(Pete),我得到的结果是空的。
如何获取包含我的字符串的行,而不仅仅是字符串完全相同的行?

ajsxfq5m

ajsxfq5m1#

使用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()列表中指定的列的行中的文本之间的相似性度量

sgtfey8w

sgtfey8w2#

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

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

通配符*可以放在字符串的 end 以匹配以它开头的任何字符串。

Pete
Peter
petechiae
peteforamerica
petethecatbooks
péteux

相关问题