我的solr服务器上的一个非常疲惫的行为:
通常在搜索“Erdnägel”时有4个与我的查询匹配的文档。 3个文件在“描述”字段上带有确切的单词,“Erdnägel”在“标题”字段中有1个文件。
但solr只返回带有searchterm“Erdnägel”的3个命名文档。如果searchterm是“Erdnäge”,我只能获得所有这四个文档。
标题字段的架构:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="25"/>
<filter class="solr.SynonymFilterFactory" tokenizerFactory="solr.KeywordTokenizerFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.HunspellStemFilterFactory" dictionary="vkf_de_DE.dic" affix="vkf_de_DE.aff" ignoreCase="true" />
</analyzer>
</fieldType>
...
<field name="oxtitle" type="text_general" indexed="true" stored="true" multiValued="false"/>
<field name="oxtitle_raw" type="string" indexed="true" stored="true" multiValued="false"/>
一切似乎都没问题,因为在“oxtitle”字段上使用“Erdnägel”作为术语使用分析工具,我从索引中得到了确切的单词。
我还测试了对solr-admin-&gt;查询的直接查询:
使用“oxtitle:'Erdnägel'” - &gt; 0结果
使用“oxtitle_raw:'Erdnägel'”1结果
有人有想法吗?
答案 0 :(得分:0)
由于您只为查询定义了HunspellStemFilterFactory,因此您可能在索引中留下了与用于查询的令牌不同的令牌。
如果您进入分析页面,为索引和查询值输入Erdnägel,并查看结果是否包含两侧的相同标记,您可以看到这一点。