如何在solr中搜索短语

时间:2012-06-19 14:31:54

标签: java solr lucene full-text-search

我有一个关于dismax的问题​​。

我有这个问题:

/itas?q=privacy%20policy&debugQuery=true&wt=xml&indent=on&pf=title^99&ps=2&mm=2&ps=2&qs=2

我在启用debugQuery的情况下获得了此响应

 <lst name="debug">
    <str name="rawquerystring">privacy policy</str>
    <str name="querystring">privacy policy</str>
    <str name="parsedquery">
+((DisjunctionMaxQuery((text:privacy)~0.01) DisjunctionMaxQuery((text:polici)~0.01))~2) DisjunctionMaxQuery((title:"privacy polici"~2^99.0)~0.01)
    </str>
    <str name="parsedquery_toString">
+(((text:privacy)~0.01 (text:polici)~0.01)~2) (title:"privacy polici"~2^99.0)~0.01
    </str>


    <lst name="explain">
        <str name="http://blah.com/">
0.0 = (MATCH) sum of: 0.0 = (MATCH) sum of: 0.0 = (MATCH) weight(text:privacy in 0), product of: 7.610095E-4 = queryWeight(text:privacy), product of: 1.0009153 = idf(docFreq=1091, maxDocs=1093) 7.603136E-4 = queryNorm 0.0 = (MATCH) fieldWeight(text:privacy in 0), product of: 1.4142135 = tf(termFreq(text:privacy)=2) 1.0009153 = idf(docFreq=1091, maxDocs=1093) 0.0 = fieldNorm(field=text, doc=0) 0.0 = (MATCH) weight(text:polici in 0), product of: 7.6379965E-4 = queryWeight(text:polici), product of: 1.004585 = idf(docFreq=1087, maxDocs=1093) 7.603136E-4 = queryNorm 0.0 = (MATCH) fieldWeight(text:polici in 0), product of: 1.0 = tf(termFreq(text:polici)=1) 1.004585 = idf(docFreq=1087, maxDocs=1093) 0.0 = fieldNorm(field=text, doc=0)
        </str>

我在parsedquery_toString部分看到标题被查询“privacy polici”,但为什么在响应中没有考虑相同的字符串?一切都分为“隐私”和“政策”

3 个答案:

答案 0 :(得分:0)

然后您必须搜索q="privacy polici"

答案 1 :(得分:0)

您确实有任何与该词组查询匹配的文档吗?它对我来说是正确的。该短语不会出现在单个单词短语匹配的文档的解释中,但与短语不匹配。文档的分数仅包含匹配的术语\词组。

答案 2 :(得分:0)

看起来搜索只在文本字段而不是标题字段

上完成

使用pf(Phrase字段)时要注意的是它只会影响结果的提升,但不会影响匹配。

因此,如果你没有通过title字段获得结果,请回顾一下架构,并确保title字段是(indexed = true),也许这就是原因。

如果你把你的回复的架构和样本放在

,也许你可以得到更多的帮助