1

架构.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 构建的自动完成功能。我想知道如何优先考虑包含“骑士”作为第一个单词的单词。例如,在列表中,“白骑士”排在第一位(我认为是因为它在使用该名称的物品中得分较多),而“游侠骑士”排在第三位。这种方式不是一个很好的自动完成解决方案。

我正在使用的查询是:

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”开头但包含短语中的那个词。

有什么建议么?

4

0 回答 0