複数のフィールドでオートコンプリートを実行することについての投稿を見ましたが、複数値のフィールドでオートコンプリートを実行することについては投稿していません。
私のオートコンプリート機能は、非複数値フィールドで機能しています。
私の問題は、複数値フィールドでクエリを実行すると、ドキュメントがそのクエリに一致する場合は常に、そのドキュメントの複数値フィールドのすべてのフィールドがファセット結果に返されることです。
以下は、Solr4クックブックで提案されているものと同様の私のスキーマです。
<fieldType name="text_autocomplete" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="publisherText-str" type="string" indexed="true" stored="false" multiValued="true"/>
<field name="publisherText-ac" type="text_autocomplete" indexed="true" stored="true" required="false" multiValued="true"/>
ご覧のとおり、publisherTextは複数値のフィールドです。オートコンプリート機能をテストするには、次のようなクエリを実行します。
/select?q=publisherText-ac:new&facet=true&facet.field=publisherText-str&facet.mincount=1&rows=0
クエリは「新規」であり、これは一連のドキュメントと一致します。ただし、ファセット結果セットには、一致する各ドキュメントの他のpublisherText値(複数値フィールドに含まれる)が含まれています。
更新:「new」をクエリする場合、結果セットには「NewYorkTimes」と「TimesNewRoman」が含まれている必要がありますが、中置問題を解決する必要はありません。「KnewtonGazette」が結果セットに含まれている必要はありません。
ファセットの結果にクエリに一致する値のみを含める方法はありますか?または、multiValuedフィールドをより適切に処理する完全なオートコンプリート機能をサポートする別の(より良い?)方法はありますか?
ありがとう。