2012-06-19 117 views
0

我有一个关于dismax的问题​​。如何搜索索尔中的短语

我有这个疑问:

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

我得到这个reseponse与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> 

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

回答

0

,那么你必须寻找q="privacy polici"

+1

我知道我能做到这一点,但我不想,我想它采取PF但是不知何故,它似​​乎并没有这样做。 – Joyce

+0

鉴于您的查询指定了pf参数,您不需要明确表示的邻近查询,您是正确的。 – Simon

+0

与edismax,有几种情况下,如果你不明确提供词组查询,它不会被添加,例如https://issues.apache.org/jira/browse/SOLR-2988 – Persimmonium

0

你真的有与词组查询的所有文档?它看起来对我是正确的。该短语不会出现在单个单词短语匹配的文档的解释中,但与该短语不匹配。文档的分数将只包含匹配的术语\词组。

0

它看起来像搜索文本字段只是做而不是标题字段

观看使用PF(乐句场)时的事情是,它不仅会影响结果的推动,但不影响匹配。

所以,如果你没有通过标题字段获得结果提示,回头看看模式,并确保标题字段是(索引=真),也许这就是原因。

也许你能得到更多的帮助,如果你把你的反应的模式和样品你得到