SOLR インスタンスで強調表示を最適化しようとしています。これにより、クエリが 2 桁遅くなるようです。トークン化されたフィールド インデックスがあり、次の定義で格納されています。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\+" replacement="%2B"/>
<tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.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">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\+" replacement="%2B"/>
<tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
項ベクトルなども生成されます。
<field name="Events" type="text_general" multiValued="true" stored="true" indexed="true" termVectors="true" termPositions="true" termOffsets="true"/>
ハイライト コンポーネントには、デフォルトの SOLR 構成を使用します。私が試したクエリは FastVectorHighlighter を使用していますが、それでも 1500 ミリ秒かかります。これは、ドキュメントごとにフィールドに 10 ~ 20 の値が格納されている 1000 ドキュメントでは非常に長くなります。クエリは次のとおりです。
q=Events:http\://mydomain.com/resource/term/906&fq=(Document_Code:[*+TO+*])&hl.requireFieldMatch=true&facet=true&hl.simple.pre=<b>&hl.fl=*&hl=true&rows=10&version=2&fl=uri,Document_Type,Document_Title,Modification_Date,Study&hl.snippets=1&hl.useFastVectorHighlighter=true
興味深いのは、solr admin stats で、単一のクエリが HtmlFormatter と GapFragmenter への 9146 のリクエストを生成することです。なぜこれが起こっているのか、ハイライターのパフォーマンスをどのように改善できるのかについて何か考えはありますか?