带有词干的MySQL全文

时间:2010-01-14 04:11:37

标签: mysql full-text-search stemming

我正在为我的网站构建一个小搜索功能。我正在接受用户的查询,截取关键字,然后根据词干关键字运行全文MySQL搜索。

问题在于MySQL将词干视为字面意思。以下是正在发生的过程:

  1. 用户搜索“棒球”这样的单词
  2. 我的词干算法(Porter Stemmer)将“棒球”变成“棒球”
  3. 全文没有找到任何与“basebal”匹配的内容,即使应该是“棒球”和“棒球”的匹配
  4. 如何使用全文来完成LIKE'basebal%'的等效操作?

    编辑:

    这是我当前的查询:

    SELECT MATCH (`title`,`body`) AGAINST ('basebal') AS `relevance`,`id` FROM `blogs` WHERE MATCH (`title`,`body`) AGAINST ('basebal') ORDER BY `relevance` DESC
    

3 个答案:

答案 0 :(得分:6)

我认为最终会使用星号:basebal*。有关详细信息,请参阅this page上的*运算符。

答案 1 :(得分:0)

请参阅此链接.Steming默认情况下不会安装在MySQL中,但您可以自行安装..

http://oksoft.blogspot.com/2009/05/stemming-words-in-mysql.html

答案 2 :(得分:0)

IN NATURAL LANGUAGE MODE是默认模式,与词干不兼容。尝试使用通配符IN BOOLEAN MODE ...

SELECT MATCH (`title`, `body`) AGAINST ('basebal*' IN BOOLEAN MODE) AS `relevance`, `id` FROM `blogs` WHERE MATCH (`title`, `body`) AGAINST ('basebal*' IN BOOLEAN MODE) ORDER BY `relevance` DESC

上面的示例为人们在问了10年后才涉足这个问题提供了清晰的信息。主题仍然很重要,而且可以从完整的示例中受益?