0

solrスキーマにいくつかのワイルドカード動的フィールドを追加しました。

<dynamicField name="*_s" type="string" indexed="true" stored="true"/>

次に、asdfasdf_sのようなフィールド名のドキュメントを追加します

このドキュメントを表示するクエリを実行すると、asdfasdf_sが設定した値で結果に保存されていることがわかります。

ただし、その動的フィールドの値で検索すると、結果が得られません。dismaxクエリパーサーを使用しています。

4

1 に答える 1

0

これは、動的フィールドのタイプフィールドタイプがに設定されていることが原因である可能性がありますstring。デフォルトでは、以下に示すように、文字列フィールドタイプは、インデックスまたはクエリ時間アナライザーが関連付けられていないため、検索しやすいものではありません。

<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>

text_general以下に示すように、フィールドタイプのようなものに変更することをお勧めします。

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

text_generalは、トークン化、小文字化、および追加された値の同義語を提供するため、フィールドのクエリに適しています。ダイナミクスのフィールドタイプを変更せずに同じ利点を得る簡単な方法の1つは、copyFieldを使用して、動的値をtext_generalフィールドタイプまたはクエリに適した他のフィールドタイプにコピーすることです。

于 2012-01-21T02:55:12.433 に答える