2016-06-23 8 views
1

solrワイルドカード検索とストップワードに問題があります。 stopwords.txtに「to」、「for」、「is」のようなストップワードをいくつか追加しました。ワイルドカード検索を行っていないときは、完全に動作します。
クエリ - >q=learningObjectTopic:to&rows=1ワイルドカード検索でソルストップワードが機能しない

<response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">3</int> 
<lst name="params"> 
<str name="q">learningObjectTopic:to</str> 
<str name="rows">1</str> 
</lst> 
</lst> 
<result name="response" numFound="0" start="0"/> 
</response> 

私はその返送データを検索、ワイルドカードを行います。
クエリ - >q=learningObjectTopic:*to*&rows=1

<response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">5</int> 
<lst name="params"> 
<str name="q">learningObjectTopic:*to*</str> 
<str name="rows">1</str> 
</lst> 
</lst> 
<result name="response" numFound="75" start="0"> 
<doc> 
<str name="id">56f4bc54b2de79277297dcab</str> 
<str name="learningObjectId">LO1_SK1_18</str> 
<str name="learningObjectTopic">Introduction to Web Development</str> 
<str name="category">learningObject</str> 
<long name="_version_">1537824533459763200</long> 
</doc> 
</result> 
</response> 

これは私が必要とどのような私のアナライザ

<fieldType name="text_general" class="solr.TextField" multiValued="false" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 

では、あまりにもワイルドカードクエリに一致してはならない "こと"、です。私はここで何が欠けていますか?

注:learningObjectTopic:ストップワードで「to」を追加したときに結果内のスキップされた「to」単語を検索するため、ストップワードのインデックス作成が機能しています。

+0

検索するフィールドはschema.xmlに= "true"が格納されていますか? もしsolrが元の文字列を保存して戻すなら、クエリアナライザがストップワードの処理方法を確認する必要があります。 –

+0

@EricNこれは私のフィールド定義です '

+0

アナライザの定義を変更した後で再インデックスを作成しましたか? – femtoRgon

答えて

0

Solr StopFilterFactoryは多項目対応コンポーネントではないため、stopFilterFactoryはワイルドカードクエリでは機能しません。 Reference link

また、シナリオが有効でない可能性があります。インデックスにキーワード "東京"がある場合、検索キーワード "to *"は、結果がの "0"を表示する代わりに返されるべきであるため、となります。

+0

..しかし、indexing_のときにストップワードが削除されるので、インデックスに '* to * 'と一致するトークンがないと、クエリ部分は一致しませんか? – MatsLindh

関連する問題