【发布时间】:2009-05-21 15:08:28
【问题描述】:
我有一个可以使用 Lucene 搜索的网站。我从日志中注意到,用户有时找不到他们正在寻找的内容,因为他们输入了一个单数术语,但网站上只使用了该术语的复数形式。我希望搜索也能找到其他形式的单词的用法。我确信这个问题已经解决了很多次,那么最好的做法是什么?
请注意:本站只有英文内容。
我想到的一些方法:
- 在某种同义词库文件中查找单词以确定给定单词的替代形式。
- 一些例子:
- 搜索“汽车”,同时将“汽车”添加到查询中。
- 搜索“carry”,同时在查询中添加“carries”和“carried”。
- 搜索“small”,同时在查询中添加“smaller”和“smallest”。
- 搜索“can”,同时在查询中添加“can't”、“cannot”、“cans”和“canned”。
- 它应该反向工作(即搜索“carries”应该添加“carry”和“carried”)。
- 缺点:
- 除非词典/词库经常更新,否则不适用于许多新的技术词汇。
- 我不确定搜索词库文件的性能。
- 一些例子:
- 根据一些启发式算法以算法方式生成替代形式。
- 一些例子:
- 如果单词以“s”或“es”或“ed”或“er”或“est”结尾,请去掉后缀
- 如果单词以“ies”或“ied”或“ier”或“iest”结尾,则转换为“y”
- 如果单词以“y”结尾,则转换为“ies”、“ied”、“ier”和“iest”
- 尝试在单词中添加“s”、“es”、“er”和“est”。
- 缺点:
- 为大多数输入生成大量非单词。
- 感觉像个黑客。
- 看起来像是您可以在 TheDailyWTF.com 上找到的内容。 :)
- 一些例子:
- 更复杂的东西?
我正在考虑对前两种方法进行某种组合,但我不确定在哪里可以找到同义词库文件(或者它的名称,因为“同义词库”并不完全正确,但也不是“字典”)。
【问题讨论】:
标签: language-agnostic search lucene linguistics