我正在尝试使用其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及其在该文档中的出现。
我是对的还是我没有正确理解此功能。
答案 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
。