我正在使用以下查询来获取单词“apple”出现在“text”字段中的总次数:
/solr/collection1/select/?q=text:apple&fl=totaltermfreq(text,apple)&rows=0&omitHeader=true
<response>
<result name="response" numFound="152322" start="0"/>
</response>
query time: 12 milliseconds
我有十几个这样的查询(例如“orange”、“pear”、“banana”等)。每个查询都运行得非常快(约 10-20 毫秒),但我必须单独发送它们。我想一次性把它们全部寄出。
我已经尝试使用带有正则表达式的 Solr 条款组件,但仅对一个术语就需要一分钟多的时间:
/solr/terms?terms.fl=text&terms.regex=apple&omitHeader=true
<response>
<lst name="terms">
<lst name="text">
<int name="apple">152322</int>
</lst>
</lst>
</response>
query time: 69866 milliseconds
如果我可以将多个词传递给总词频函数查询,那就太好了。想法?
最佳答案
使用 *:*
查询所有文档并将函数查询添加到您要提取的每个术语的字段列表中:
?q=*:*&fl=ttf(text,apple),ttf(text,banana),ttf(text,pear)&rows=1
关于Solr 多个术语的总术语频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25280948/