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 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”开头的那些“但在短语中包含了这个词。
有什么建议吗?