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」単語を検索するため、ストップワードのインデックス作成が機能しています。
検索するフィールドはschema.xmlに= "true"が格納されていますか? もしsolrが元の文字列を保存して戻すなら、クエリアナライザがストップワードの処理方法を確認する必要があります。 –
@EricNこれは私のフィールド定義です ' –
アナライザの定義を変更した後で再インデックスを作成しましたか? – femtoRgon