- 14
- 0
- 约4.04千字
- 约 11页
- 2016-11-05 发布于重庆
- 举报
如何在Solr中更好的处理同义词
如何在Solr中更好的处理同义词
当使用Solr来构建搜索引擎的时候,你可能经常会遇到这样的场景:你有一个同义词列表,并且你想用户查询也能够命中到同义词。听起来很简单不是吗?为什么搜索“dog”的时候,不能命中包含“hound(猎犬)”或者“pooch(狗)”的文档呢?甚至包含“Rover(流浪者)”和“canis familiaris(犬)”?
叫Rover或者其他名字,可能只是为了让小狗听起来很可爱。
事实证明,Solr的同义词扩展没有你想象的那么简单。但是我们有很多好的方法来搬石头砸自己的脚。
Solr提供了一个听起来很酷的SynonymFilterFactory,它可以接收一个逗号分割的同义词文本。你甚至可以选择同义词是相互扩展还是特定方向的替换。
举例来说,你可以让“dog”,“hound”和“pooch”都扩展为“dog|hound|pooch”,或者你可以指定“dog”映射到“hound”,反过来却不可以,或者你可以把所有的词都转化为”dog“,Solr处理这部分是非常灵活的并且做的很棒。
当你考虑是把SynonymFilterFactory放在查询分析器还是索引分析器时,这个问题就变得很复杂啦。
下图总结了查询时(query-time)和索引时(index-time)同义词扩展的基本差异。当然我们是为了解决solr中使用的问题,但是这2种方法适用于任何信息检
原创力文档

文档评论(0)