MySQL搜索匹配词的一部分

时间:2016-09-02 09:30:33

标签: mysql sql database

对于我网站上的一个小而简单的搜索工具,我使用MySQL的MATCH AGAINST根据搜索词找到最相关的行。现在我使用这个查询:

SELECT * FROM mytable WHERE MATCH (name,description) AGAINST ('".$term."*' IN BOOLEAN MODE)

例如,如果我搜索' sys'查询给出了结果,如系统或系统。我遇到的问题和我希望实现的问题是,当搜索词是“系统”时。我只能使用确切的单词'系统'来获得结果,我希望通过“系统”这个词得到结果。同样。

我已经检查了文档,但我似乎无法找到解决方案。有人之前碰到过吗?

1 个答案:

答案 0 :(得分:1)

评论时间有点长。

您要求的内容通常在全文搜索引擎中以两种方式之一实现。更常见的方法是术语的同义词列表。这些可以让你说“系统”和“系统”是一回事。

据我所知,MySQL不支持同义词列表。您可以通过预处理数据或查询来替换同义词值,以繁琐的方式自行实现它们。

第二种方法称为词干。这会将单词转换为“根”形式,因此“系统”将被识别为“系统”的复数形式,并且两者将匹配。词干只能在查询中应用。或者,对于真正雄心勃勃的,它也可以应用于文档存储方面。问题存在歧义。英语(和其他语言)充满了例外,其中词干没有意义。