2

Solr1.4.1でRubySunspotgemを使用しています

ハイフンでの検索に問題があります。

「foobarbla」の検索を実行すると、期待される結果が返されます。

「foo--barbla」のように検索語にハイフンが含まれている場合、結果は返されません。

ストップワードリストにハイフンを追加し、過去数日間にさまざまな方法でschema.xmlファイルを微調整しましたが、役に立ちませんでした。

Sunspotにさらされている人のために、最小単語一致を3に設定します。これは、solrconfig.xmlファイルで同じmm構成を設定するのと同じです。例:3

これは私のschema.xmlファイルの関連部分がどのように見えるかです。

    <!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="string" class="solr.StrField" tokenized="true" omitNorms="true" sortMissingLast="true">
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.ASCIIFoldingFilterFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
  </analyzer>
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.ASCIIFoldingFilterFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" />
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" side="front"/>
  </analyzer>
</fieldType>

<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.ASCIIFoldingFilterFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
  </analyzer>
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.ASCIIFoldingFilterFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" />
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" side="front"/>
  </analyzer>
</fieldType>

ヘルプや提案をいただければ幸いです。

ありがとう、

4

1 に答える 1

6

ハイフン文字(-)は、演算子に続く単語に一致する結果を除外するために使用されるSolr演算子です。ストップワードリストにハイフンを追加しても、それに影響はないと思います。Solrを介してクエリを実行する前に、ハイフンを削除することをお勧めします。私の推測では、ハイフンを使用した結果は「バー」に一致するドキュメントを除外しているということですか?おそらく、結果をファセットして、それが実際に当てはまるかどうかを確認することができます。

于 2012-03-12T00:33:41.327 に答える