我怎样才能使复数/单数形式的单词形式化?
示例:如果某人搜索“男士戒指”,我如何检查数据库以查看是否有任何字段包含男士,男士,男士,戒指,戒指等?
答案 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%的情况也是如此。
干杯, 阿希什