按查询 - 过滤器的过滤顺序查询

时间:2016-02-16 18:59:21

标签: solr

民间,

我们希望确保solr根据过滤顺序查询数据。

例如,如果输入的内容类似于“请在这里帮助某人”,那么首先它应根据以下内容查询数据(以下所有内容均为5个不同的文件供我们使用)

“请帮忙” “帮助他人” “有人在这里”

然后通过

“请” “救命”  等

我们看到solr正在随机选择索引和搜索文档

e.g。如果我们搜索“请在这里帮助某人”它正在打印到文件中有“需要帮助”的文件(这是在中间,但应该在底部)

<analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/> 

        <filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="4" outputUnigrams="false"/> 
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    </analyzer>

1 个答案:

答案 0 :(得分:0)

索引到两个不同的字段,一个用于Shingle匹配(如您定义的),另一个用于自由文本匹配。使用qf=shinglefield^10 textfield对得分进行不同的匹配 - 以便在shinglefield中的匹配得分比常规文本字段中的匹配高十倍。您需要根据自己的需要调整这些权重。

如果使用edismax或旧的dismax查询解析器,

qf是一个有效的参数。