与德语变音符号无效的solr停用词

时间:2014-04-02 06:15:24

标签: encoding solr filter lucene

早上好! 我在solr中遇到了一个关于stopword-filter的问题。我只在查询时使用该过滤器。所有的停用词都被忽略了,因为它告诉我过滤器工作正常,...除了带有ä,ö或ü等字符的单词。 这是我的schema.xml:

 .....
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" tokenizerFactory="solr.KeywordTokenizerFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>-->
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="25"/>
    </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>
 .....

分析查询短语,例如solr admin中的“zeltfürmesse”确实排除了“für”这个词。但是,通过我们的网络搜索的所有请求都会导致solr在使用包含“ü”,“ä”或“ö”的停用词时没有结果。

stopwords.txt是正确的UTF-8编码。

顺便说一句,我们通过node-api服务器处理来自/来自solr的请求。也许节点服务器没有使用正确的编码?但所有其他请求,例如搜索ö,ä或ü不包含在禁用词列表中的单词正确到达solr-server。

有什么想法吗?谢谢


我得到了解决方案:

在一个字段类型中,我也使用了StopFilterFactory,还有一个charFilter,用正则表达式替换该字段的所有非法字符。 但是ä,ö,ü这样的特殊人物并没有被考虑过。

将正则表达式从“([^ a-z0-9])”更改为“([^ a-z0-9öäü])”解决了我的问题。

    <fieldType name="product_number" class="solr.TextField" positionIncrementGap="100">
      ....
      <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="([^a-z0-9öäü])" replacement=""/>
      ....
    </fieldType>

0 个答案:

没有答案