首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Solr和Hibernate搜索的多词同义词

Solr和Hibernate搜索的多词同义词
EN

Stack Overflow用户
提问于 2012-05-23 06:39:39
回答 1查看 805关注 0票数 1

我有一个内容如下的synonyms.txt文件

代码语言:javascript
运行
复制
car accessories, gadi marmat

我正在索引汽车配件作为一个单一的标记,这样它将扩展到汽车配件gadi marmat

我希望整个同义词能够匹配,以便在查询gadi marmat时,返回带有汽车配件的记录。

我使用shingle过滤器工厂来扩展查询,以便在搜索gadi marmat时,它将扩展到gadigadi marmatmarmat,并且由于gadi marmatE 220作为单个令牌被查询,它应该匹配E 121汽车配件E 222并返回结果,但情况并非如此,但当我搜索E 123汽车附件e 224时,它将返回结果。因此,必须使用具有多个单词的同义词进行索引。

请建议一下。

EN

回答 1

Stack Overflow用户

发布于 2012-10-12 09:08:42

同义词文件仅用于更改您正在搜索的单词。所以如果你写

汽车配件=> gadi marmat

当编译器在“汽车配件”上匹配时,它试图在"gadi marmat“上进行匹配。

它像单个令牌一样工作。

你可以得到很好的结果混合分析仪的元素,像那样。

代码语言:javascript
运行
复制
@AnalyzerDef(name = "integram",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
     @TokenFilterDef(factory = LowerCaseFilterFactory.class),
     @TokenFilterDef(factory = StopFilterFactory.class, params = {
         @Parameter(name = "words", value = "lucene/dictionary/stopwords.txt"),
         @Parameter(name = "ignoreCase", value = "true"),
         @Parameter(name = "enablePositionIncrements", value = "true")
     }),
     @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = {
            @Parameter(name = "language", value = "English")
     }),
     @TokenFilterDef(factory = SynonymFilterFactory.class, params = {
         @Parameter(name = "synonyms", value = "lucene/dictionary/synonyms.txt"),
         @Parameter(name = "expand", value = "false")
     }),
     @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = {
            @Parameter(name = "language", value = "English")
     })
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10714720

复制
相关文章

相似问题

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