在特定字段中没有完全匹配的结果

时间:2014-08-25 08:52:09

标签: solr

我的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结果

有人有想法吗?

1 个答案:

答案 0 :(得分:0)

由于您只为查询定义了HunspellStemFilterFactory,因此您可能在索引中留下了与用于查询的令牌不同的令牌。

如果您进入分析页面,为索引和查询值输入Erdnägel,并查看结果是否包含两侧的相同标记,您可以看到这一点。