Solr 8.9.0でのワイルドカードクエリに関するパフォーマンス問題
(The bot translated the original post https://lists.apache.org/thread/qlx9nm4c5m0d5bb0wwxrfczm556qm5l6 into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
Solr 8.9.0を使用しています。Solr Cloudを2つのシャードに分割し、それぞれのシャードに1つのレプリカを持たせています。また、Solr Cloudのために5つのZooKeeperを使用しています。
「documents」というコレクションを作成し、1つのシャードのインデックスサイズは21GBです。スキーマフィールドは以下のように設定されています:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" omitNorms="true" termVectors="false" termPositions="false" termOffsets="false" docValues="true"/>
<field name="doc_ref" type="text_string" indexed="true" stored="true" multiValued="false" omitNorms="true" termVectors="false" termPositions="false" termOffsets="false" omitTermFreqAndPositions="true"/>
<fieldtype name="text_string" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldtype>
データを検索する際に「test」を含むデータを見つけたいと考えています。そのため、doc_ref:*test*
というワイルドカードクエリを使用しています。しかし、このワイルドカードクエリが高いメモリとCPUを消費していると思われます。時々、このワイルドカードクエリの使用によってコレクションがリカバリーモードに入る問題が発生しています。
パフォーマンスを向上させるために、ReversedWildcardFilterFactoryを実装しました。
ReversedWildcardFilterFactoryを適用した後、どのように検索すればよいでしょうか?同じ方法でdoc_ref_rev:*test*
と検索しても、クエリの実行時間に関しては改善が見られません。
インデックスサイズが大きい場合、ワイルドカード文字列(*test*
)を検索する際の最適なアプローチをご提案いただけませんか?
よろしくお願いします。
Vishal
トピックへ返信するには、ログインが必要です。