首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Solr中使用SynonymFilterFactory和ShingleFilterFactory?

如何在Solr中使用SynonymFilterFactory和ShingleFilterFactory?
EN

Stack Overflow用户
提问于 2015-02-13 16:05:37
回答 1查看 500关注 0票数 1

我想要实现的是寻找‘除臭剂喷雾’匹配‘止汗喷雾’,‘迪奥喷雾’等。

我使用SynonymFilterFactory在索引时间添加除臭剂、除臭剂和止汗剂的同义词。我可以在分析器上看到这个正确的工作。

在此之后,我将运行一个ShingleFilterFactory (maxShingleSize="3")来拆分成单词的组合。这再一次给了我正确的结果,例如分析“测试板短语”:

  • 测试
  • 试验瓦
  • 测试板短语
  • 瓦形
  • 板语短语
  • 短语

这就是我们想要的结果。当我把同义词术语和shingles结合起来时,问题就来了。例如,搜索“除臭剂喷雾”应该会给我:

  • 除臭剂喷雾
  • deo喷雾
  • 止汗喷雾

我所有的同义词。但我真正看到的是:

  • 除臭剂
  • 除臭除臭剂
  • 除臭剂除汗剂
  • 迪奥
  • deo止汗剂
  • deo止汗喷雾
  • 止汗剂
  • 止汗喷雾

很明显,从每一个同义词术语中都可以制造出瓦状物。我试着换掉我的过滤工厂的订单,但似乎没能让它运转起来。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2015-10-22 12:24:01

您唯一能做的就是使用同义词过滤器而不展开--将所有同义词减少到列表中的第一个。然后,您必须在索引时和查询时使用它。

这种方法不会导致文档中描述的问题,因为您也必须在索引上应用过滤器。

考虑以下情况:

  • 带有"text“字段的索引,该字段在查询时使用SynonymFilter和同义词TV、Televesion和expand="true”
  • 载有“文本:电视”一词的数千份文件
  • 载有“文本:电视”一词的几百份文件

对文本的查询:TV将扩展到(文本:TV文本:TV)和较低的文本docFreq (文本:TV):电视将给与“电视”匹配的文档一个更高的分数,而与"TV“相匹配的文档(与”TV“匹配)可能有点违背客户的直觉。索引时间的扩展(或减少)将导致对所有文件使用相同的以色列国防军,而不论原始文本所包含的术语是什么。

但是,如果您想支持文档中描述的多个单词同义词,您可能仍然会遇到问题。

我不知道由同义词组成的标签是否会对搜索结果产生影响,但如果不是,那么只需要在索引中增加空间,所以考虑一下是否想要保存它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28503714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档