我正在尝试使用solr来获取单词的频率。当我提出这个问题时:
localSolr/solr/select?q=someQuery&rows=0&facet=true&facet.field=content&wt=xml
solr给我的频率如下;
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="content">
<int name="word1">24</int>
<int name="word2">12</int>
<int name="word3">8</int>
但是当我算上这些话时;我发现word2的实际计数是13. Solr将字段中的相同单词计为一个。
例如;
字段文本包含; word2 word5 word7 word9 word2
。 Solr不返回word2的计数数字2,而是返回1.对于下面两个句子的word2计数,它返回1;
word2 word10 word11 word12
word2 word9 word7 word2 word23
所以频率错误地返回。我检查了facet字段但没有找到适当的参数。如何修复它以便在句子中计算相同的单词?
编辑: schema.xml的相关部分:
<fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
<field name="content" type="text_tr" stored="true" indexed="true" multiValued="true"/>
<copyField source="content" dest="text"/>
<field name="text" type="text_tr" stored="false" indexed="true" multiValued="true"/>
答案 0 :(得分:2)
如果您正在进行的字段是多值的,那么构面中的每个字都会获得正确的计数
我忘了提一件事:Term Vector Component会把你送到你需要的地方
在查询中, tv.tf 会为您提供每个字词的术语频率,而 tv.fl 告诉solr应在哪些字段中计算频率
NB 这使您的索引时间比现在慢(又名:你必须尝试)
答案 1 :(得分:0)
使用luke请求处理程序
http://localhost:8983/solr/admin/luke?fl=YOUR_TEXT_FIELD&numTerms=500