Solr中的字频率

时间:2012-10-23 13:28:43

标签: java solr word-frequency

我正在尝试使用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"/>

2 个答案:

答案 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

更多信息:http://wiki.apache.org/solr/LukeRequestHandler