termFreq函数查询在Apache solr中如何工作。

时间:2018-10-03 12:18:10

标签: function solr

我正在尝试使用其API查询solr索引,

http://localhost:8983/solr/documents/select?defType=func&q=termfreq(contents,'hello)&wt=json

我已经索引了3个文档,并且2个文档/记录具有“ hello”一词,但是它返回了所有文档。

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"termfreq(contents,'hello')",
      "defType":"func",
      "indent":"on",
      "wt":["json",
        "json"],
      "_":"1538568705504"}},
  "response":{"numFound":3,"start":0,"docs":[
      {*here I have docs*}
  ]
  }

我希望文档中只包含单词hello及其在该文档中的出现。

我是对的还是我没有正确理解此功能。

1 个答案:

答案 0 :(得分:2)

您不能使用Solr中的函数。要仅检索词项为hello的文档,并将计数作为分数,请使用:

q=content:hello _val_:"termfreq(contents,'hello')"

查询的第一部分将结果集限制为在hello字段中具有content的文档,而第二部分将invokes the function query parser到魔术_val_字段。该功能的结果被指定为文档的分数,从而有效地返回匹配的文档和这些文档中给定术语的计数。

如果您不想将其分配为得分,那么您也应该可以直接在字段列表(termfreq(contents, 'hello'))中使用fl=termfreq(contents,'hello'),score,foo