2

autosuggest の solr ストップワードに問題があります。すべてのストップワードは _ 記号に置き換えられました。

たとえば、フィールド「deal_title」に「the simple text in」というテキストがあります。"simple" という単語を検索しようとすると、solr は次の結果 "_ simple text _" を表示しますが、"simple text" を期待します。

誰かがなぜこれがそのように機能するのか、そしてそれを修正する方法を説明してもらえますか? これが私のschema.xmlの一部です

<fieldType class="solr.TextField" name="text_auto">
    <analyzer type="index">
        <charFilter class="solr.HTMLStripCharFilterFactory"/>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
        <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" outputUnigramsIfNoShingles="false" /> 
    </analyzer> 
    <analyzer type="query">
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
        <tokenizer class="solr.StandardTokenizerFactory"/> 
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    </analyzer>
</fieldType>

<field name="deal_title" type="text_auto" indexed="true" stored="true" required="false" multiValued="false"/>

<fieldType name="text_general" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
4

2 に答える 2

2

Solr 6.3 でのこれに対する私の解決策 (これはenablePositionIncrements="false"もう不可能です) は次のとおりでした。

  1. ストップワードを削除
  2. で帯状疱疹fillerToken=""(を削除します_
  3. 先頭と末尾のスペースを削除
  4. 重複を削除

    <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_de.txt" ignoreCase="true"/>
    <filter class="solr.ShingleFilterFactory" fillerToken=""/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="(^ | $)" replacement=""/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    

于 2017-01-10T10:22:55.523 に答える
0

これを修正するには、solconfig.xml で<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true" enablePositionIncrements="false" />andを使用する必要があります<luceneMatchVersion>4.3</luceneMatchVersion>

于 2015-02-12T13:44:03.860 に答える