SQL复数/单数搜索

时间:2010-06-21 20:52:24

标签: mysql full-text-search

我怎样才能使复数/单数形式的单词形式化?

示例:如果某人搜索“男士戒指”,我如何检查数据库以查看是否有任何字段包含男士,男士,男士,戒指,戒指等?

3 个答案:

答案 0 :(得分:5)

似乎使用LIKE似乎不是您需要的最佳方法。我会研究MySQL FULLTEXT索引以获得基本功能。我将不得不更多地研究复数,看看是否可以实现。

看看这两个链接的FULLTEXT索引信息。

以下是第二篇文章的摘录:

SELECT headline, story FROM news
WHERE MATCH (headline,story) AGAINST ('Hurricane');

<强>更新

我发现this SO post其中的评论似乎表明FULLTEXT索引会考虑复数和语法形式,但他没有引用来源,所以我很难肯定地说。你能试试FULLTEXT索引方法吗?

答案 1 :(得分:3)

MySQL的Sphinx full-text搜索引擎处理此类情况,还有一些(请参阅here)。

它使用 Porter Stemmer算法 [2] [3]将“钓鱼”,“钓鱼”,“鱼”和“渔夫”等内容映射到根干“鱼”(见wiki)。

答案 2 :(得分:1)

select * from index_table where item_name rlike '[[:<:]]preform[s]*[es]*[ies]*[[:>:]]';

检查这是否有帮助。我的情况很好。虽然不会涵盖所有复数,但是90-95%的情况也是如此。

干杯, 阿希什