【发布时间】:2017-01-30 22:50:19
【问题描述】:
我试图让同义词适用于具有空格的术语,这显然是 solr 的一个缺点。为了破解它,我尝试使用 PatternReplaceCharFilterFactory 用连字符替换空格,然后用连字符连接我的同义词:
<fieldType name="special_synonyms" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="100" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
preserveOriginal="1"
/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="([/\s+])" replacement="-" />
<filter class="solr.KStemFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
</analyzer>
使用分析工具,当我输入我的多字词时,我得到了正确的同义词,但是当我运行查询时,它发现 0 个结果,除非我自己手动添加连字符。
【问题讨论】: