schema.xml
<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="itemName" type="text_general" indexed="true" stored="true" required="true" />
<field name="itemNameAutocomplete" type="text_autocomplete" indexed="true" stored="false" />
<field name="itemNameShow" type="string" indexed="true" stored="false" />
<copyField source="itemName" dest="itemNameAutocomplete"/>
<copyField source="itemName" dest="itemNameShow"/>
http://oi40.tinypic.com/21azfao.jpg
上記は私のschema.xml定義であり、画像はSolrを使用して構築しようとしているオートコンプリート用です。最初の単語に「knight」を含む単語を優先する方法を知りたいです。たとえば、リストでは "White Knight" が 1 位 (その名前で見つかったアイテムの数が多かったためだと思います) で、"Knight Errant" が 3 位です。この方法は、あまり良いオートコンプリート ソリューションではありません。
私が使用しているクエリは次のとおりです。
http://localhost:8983/solr/select?q=itemNameAutocomplete:"knight"&q.op=AND&rows=0&facet=true&facet.field=itemNameShow&facet.mincount=1&facet.limit=500&wt=json
最初に "Knight Errant" を表示し、続いて "Knight Exemplar" など ("knight" で始まるすべてのフレーズ) を表示し、その後にのみ "knight" で始まらないが含まれるフレーズを表示します。句の中のその言葉。
助言がありますか?