Lucene / Solr结果中的详细信息

时间:2010-06-10 12:27:40

标签: lucene solr

在没有指定字段的情况下在Lucene / Solr中执行搜索后,如何知道搜索字符串在哪个字段中找到了搜索字符串(以及频率)?

3 个答案:

答案 0 :(得分:3)

您可以使用Query Highlighting

答案 1 :(得分:3)

尝试设置debugQuery=on。请参阅this example

答案 2 :(得分:1)

如前所述,使用debugQuery = true。然后,响应将包括“解释”部分。默认情况下,这将为您提供一些可怕的格式化文本,如下所示:

0.69102794 = (MATCH) weight(body:arrai^1.5 in 6357), product of:
  0.46610788 = queryWeight(body:arrai^1.5), product of:
    1.5 = boost
    5.591044 = idf(docFreq=55709, maxDocs=5492855)
    0.055577915 = queryNorm
  1.4825494 = (MATCH) fieldWeight(body:arrai in 6357), product of:
    2.828427 = tf(termFreq(body:arrai)=8)
    5.591044 = idf(docFreq=55709, maxDocs=5492855)
    0.09375 = fieldNorm(field=body, doc=6357)

对于每个字段中的每个匹配,您将得到一个这样的块,它解释了SOLR如何计算此文档与查询的相关性。您要问的是什么(本文档字段中有多少匹配)SOLR称术语频率为“tf”。你可以在我上面粘贴的输出的第7行看到这个。在这一行中,SOLR告诉你它在名为“body”的字段中找到了arrai的8个匹配项。

其他行代表反向文档频率 - “idf”(匹配项有多少)和fieldNorm,它与文档字段相对于匹配的时间有关。您可以在此处了解这些内容:http://wiki.apache.org/solr/SolrRelevancyFAQ

仅供参考,如果您需要以结构化格式提供此“解释”信息而不是笨拙的文本,您可以使用您的查询传递此参数:debug.explain.structured = true但是,它仍然很难使用=)