对于我网站上的一个小而简单的搜索工具,我使用MySQL的MATCH AGAINST根据搜索词找到最相关的行。现在我使用这个查询:
SELECT * FROM mytable WHERE MATCH (name,description) AGAINST ('".$term."*' IN BOOLEAN MODE)
例如,如果我搜索' sys'查询给出了结果,如系统或系统。我遇到的问题和我希望实现的问题是,当搜索词是“系统”时。我只能使用确切的单词'系统'来获得结果,我希望通过“系统”这个词得到结果。同样。
我已经检查了文档,但我似乎无法找到解决方案。有人之前碰到过吗?
答案 0 :(得分:1)
评论时间有点长。
您要求的内容通常在全文搜索引擎中以两种方式之一实现。更常见的方法是术语的同义词列表。这些可以让你说“系统”和“系统”是一回事。
据我所知,MySQL不支持同义词列表。您可以通过预处理数据或查询来替换同义词值,以繁琐的方式自行实现它们。
第二种方法称为词干。这会将单词转换为“根”形式,因此“系统”将被识别为“系统”的复数形式,并且两者将匹配。词干只能在查询中应用。或者,对于真正雄心勃勃的,它也可以应用于文档存储方面。问题存在歧义。英语(和其他语言)充满了例外,其中词干没有意义。