Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按照Query-solr中过滤器的顺序进行查询_Solr - Fatal编程技术网

按照Query-solr中过滤器的顺序进行查询

按照Query-solr中过滤器的顺序进行查询,solr,Solr,各位 我们希望确保solr根据过滤器顺序查询数据 例如,如果输入“请在此帮助某人”,则首先应根据以下内容查询数据(以下内容均为我们的5个不同文档) “请帮忙” “帮助某人” “这里有人” 然后 “请” “帮助” 等 我们看到solr随机选取索引并搜索文档 例如,如果我们搜索“请帮助这里的人”,它正在向文档中键入“需要帮助”的文本(这是中间的,但应该在底部)。 索引到两个不同的字段中,一个用于木瓦匹配(如您所定义),另一个用于自由文本匹配。通过使用qf=shinglefield^10 textfi

各位

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

例如,如果输入“请在此帮助某人”,则首先应根据以下内容查询数据(以下内容均为我们的5个不同文档)

“请帮忙” “帮助某人” “这里有人”

然后

“请” “帮助” 等

我们看到solr随机选取索引并搜索文档

例如,如果我们搜索“请帮助这里的人”,它正在向文档中键入“需要帮助”的文本(这是中间的,但应该在底部)


索引到两个不同的字段中,一个用于木瓦匹配(如您所定义),另一个用于自由文本匹配。通过使用
qf=shinglefield^10 textfield
,对匹配项进行不同的评分-这样,shinglefield中的匹配项的评分将比常规文本字段中的匹配项高出十倍。您需要根据自己的需要调整这些权重


qf
是一个有效的参数,如果使用edismax或旧的dismax查询解析器。

我们如何才能只索引字段上的小木瓦(而不是单个标记)。在提供木瓦过滤器之前,似乎必须提供标记器。我们尝试添加(关键字TokenizerFactory、WhiteSpaceTokenizerFactory、StandardTokenizerFactory)SingleFilterFactory,其中unigrams设置为false,minGrams 2不应输出任何仅为单个值的令牌。使用分析页面确认设置是否正确。您好,感谢您的帮助,我们还面临一个问题,我们希望对我们的响应进行排序,以便结果按以下顺序显示:1)“google facebook”2)“google”3)“facebook”,但似乎我们比google先获得facebook。(通过shinglefilerfactory,我们获得了“谷歌facebook”作为第一个文档,谢谢)。
<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>