如何在 Apache Solr 中使用缩写词?
How to use acronyms in Apache Solr?
我使用 Solr 提供的配置的 text_general
字段来存储网页内容,如下所示:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
字段:
<field name="content" type="text_general" stored="true" indexed="true"/>
比如说,在 synonyms.txt
我有一个条目:
ABC=>Apple Ball Company
如果我在 content
字段上执行搜索 q=content:ABC
在我的数据上我没有任何内容与“Apple Ball Company
”一起。
我在我的 content
中得到了所有单词 Apple
、Ball
和 Company
的突出显示片段,其中包含那些顺序不相同甚至不在一起出现的单词。
我只希望突出显示首字母缩略词 ABC
and/or 仅针对扩展“Apple Ball Company
”(如果这些词以相同的顺序组合在一起)。
多词同义词 SynonymFilterFactory
存在问题,导致 "sausagination"。这里解释得很好:https://lucidworks.com/2014/07/12/solution-for-multi-term-synonyms-in-lucenesolr-using-the-auto-phrasing-tokenfilter/ The reason is that the filter only takes into account the offset of the tokens but not the position length increment. This has been address with the SynonymGraphFilter, see https://lucene.apache.org/solr/guide/6_6/filter-descriptions.html#FilterDescriptions-SynonymGraphFilter
因此请使用 SynonymGraphFilter
而不是已弃用的 SynonymFilterFactory
,例如<filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt"/>
.
我使用 Solr 提供的配置的 text_general
字段来存储网页内容,如下所示:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
字段:
<field name="content" type="text_general" stored="true" indexed="true"/>
比如说,在 synonyms.txt
我有一个条目:
ABC=>Apple Ball Company
如果我在 content
字段上执行搜索 q=content:ABC
在我的数据上我没有任何内容与“Apple Ball Company
”一起。
我在我的 content
中得到了所有单词 Apple
、Ball
和 Company
的突出显示片段,其中包含那些顺序不相同甚至不在一起出现的单词。
我只希望突出显示首字母缩略词 ABC
and/or 仅针对扩展“Apple Ball Company
”(如果这些词以相同的顺序组合在一起)。
多词同义词 SynonymFilterFactory
存在问题,导致 "sausagination"。这里解释得很好:https://lucidworks.com/2014/07/12/solution-for-multi-term-synonyms-in-lucenesolr-using-the-auto-phrasing-tokenfilter/ The reason is that the filter only takes into account the offset of the tokens but not the position length increment. This has been address with the SynonymGraphFilter, see https://lucene.apache.org/solr/guide/6_6/filter-descriptions.html#FilterDescriptions-SynonymGraphFilter
因此请使用 SynonymGraphFilter
而不是已弃用的 SynonymFilterFactory
,例如<filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt"/>
.