首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lucene:迭代所有条目

Lucene:迭代所有条目
EN

Stack Overflow用户
提问于 2011-09-27 00:32:47
回答 1查看 1.2K关注 0票数 0

我有一个Lucene索引,我想要迭代(在开发的当前阶段进行一次评估)我有4个文档,每个文档有几十万到几百万个条目,我想迭代每个条目的单词数(~2-10)并计算频率分布。

我现在所做的是:

代码语言:javascript
复制
   for (int i = 0; i < reader.maxDoc(); i++) {
                    if (reader.isDeleted(i))
                        continue;

                    Document doc = reader.document(i);
                Field text = doc.getField("myDocName#1");

                String content = text.stringValue();


                int wordLen = countNumberOfWords(content);
//store
}

到目前为止,它正在迭代一些东西。调试确认它至少对文档中存储的术语进行操作,但由于某些原因,它只处理存储的术语的一小部分。我想知道我做错了什么?我只是想迭代所有文档和存储在其中的所有内容?

EN

回答 1

Stack Overflow用户

发布于 2011-09-27 01:41:06

首先,您需要确保您的索引启用了TermVectors

代码语言:javascript
复制
doc.add(new Field(TITLE, page.getTitle(), Field.Store.YES, Field.Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS));

然后,您可以使用IndexReader.getTermFreqVector对术语进行计数

代码语言:javascript
复制
TopDocs res = indexSearcher.search(YOUR_QUERY, null, 1000);

// iterate over documents in res, ommited for brevity

reader.getTermFreqVector(res.scoreDocs[i].doc, YOUR_FIELD, new TermVectorMapper() {
            public void map(String termval, int freq, TermVectorOffsetInfo[] offsets, int[] positions) {
                // increment frequency count of termval by freq
                freqs.increment(termval, freq);
            }

            public void setExpectations(String arg0, int arg1,boolean arg2, boolean arg3) {}
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7558220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档