6

Solrでストップワードのあるフレーズを検索しているときに問題が発生しました。Solrはストップワードで結果を送信しますが、これは私の期待する出力ではありません。

stopwords.txtファイルに「test」という単語を追加しました。schema.xmlファイルには、次のようなフィールドがあります

<field name="searchword" type="text" indexed="true" stored="true"   />

いくつかのデータにインデックスを付けてから、次のようにSolrブラウザーウィンドウで検索しようとしました:searchword: "test"、そして結果が得られませんでした。それからまた、searchwordのようなフレーズを与えました:「テストデータ」そして私は結果を得ました。そのようなシナリオを回避する方法は?ストップワードが含まれている場合、Solrは結果を出さないはずです。フレーズにストップワードが含まれている場合、solrで結果を停止するにはどうすればよいですか?

以下は、私が使用しているfieldTypeです。

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
    </analyzer>
    <analyzer type="query">         
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" type="phrase"/>
    </analyzer>
</fieldType>

ストップワードを含むフレーズを指定している間、Solrが結果を提供しないための解決策が必要です(テスト)

4

1 に答える 1

1

「ストップ」ワードは、検索で考慮されないワードです。結果を「停止」または無効にする言葉ではありません。したがって、あなたが説明する振る舞いは正しいです:それはストップワードがすることになっていることです。

特定の単語を使用するたびに結果フォームが返されるのを「停止」する方法は、SOLRではわかりません(誰かがアイデアを持っているかもしれません)。

私が考えることができる唯一のことは:-クエリでそれらの用語を観察するときにSOLRにクエリを送信しないでください:)-インデックスを作成する前に(たとえばUpdateRequestProcessorを使用して)ドキュメントから用語を削除し、ANDクエリを使用します。そうすれば、インデックス付けされていない用語がクエリに表示されるたびに、結果はゼロになります

于 2012-01-31T12:41:29.863 に答える