如何使用Solr数学运算或函数查询来为查询返回的所有文档中的每个单词添加词频(tf)值?
我知道有一些方法可以用java迭代地添加词条向量,但是如果索引很大或者内存有限的话,这可能会花很长时间。Solr有原始的词条频率值和添加正常字段值的能力,所以我认为它应该能够添加词条频率,只是我不知道怎么做。
还有,我也不知道提前都是些什么字,每份文件都可以有任意的字组合。
对于此文档结果:
"docs": [
{
"id": 0,
"content": [
"FOO FOO BAR"
],
},
{
"id": 0,
"content": [
"FOO BAR"
],
},
]},"termVectors": [
"uniqueKeyFieldName",
[
"0",
[
"FOO",
[
"tf",
2
],
"BAR",
[
"tf",
1
],
],"1",
[
"FOO",
[
"tf",
1
],
"BAR",
[
"tf",
1]]}
我想要这样的东西:
{"frequencies":{
"FOO" : 3
"BAR" : 2
}
UPDATE:我现在可以使用Java的编程方法,因为我不认为SOLR支持这样的开箱即用的操作。
3条答案
按热度按时间ctrmrzij1#
totaltermfreq
或ttf
会提供索引中出现的词汇总次数。vshtjzan2#
您是否已经考虑过“facet“功能?
vsikbqxv3#
您是否检查了Stats组件?可以将动态字段定义为
stats.field
。请参阅Solr Stats组件示例中的stats.field={!func}termfreq('text','memory')
:http://localhost:8983/solr/techproducts/select?q=*:*&wt=xml&stats=true&stats.field={!func}termfreq('text','memory')&stats.field=price&stats.field=popularity&rows=0&indent=true