[lucene] 请问:可以从document直接获得terms吗?

infinityhp 2009-08-07
新手报道~~~顺便带来个小问题呵呵

请问Lucene中,有没有直接获得一个document的所有terms的API方法?

我的目的是搜索后获得到一个hits列表,然后需要对这个列表的所有词语(索引时经中文分词)进行出现频率的统计;

据我所知的highlight的做法,获取到具体document后还是需要切一次词才能获得term进行操作,这是否就意味着lucene没有提供这种”反反向索引“查询的存储文本以及API呢?

先行谢过~
amigobot 2009-08-08
不行啊, 倒排表嘛。

实在要的话你就把所有的term,序列化一下变成一个Field, 自己计算了。 不过要考虑空间占用的问题。

infinityhp 2009-08-10
原来是有个"TermFreqVector"的类,可以获取通:IndexReader.getTermFreqVector(i, "fieldName");的方法获得某一document的某field的所有terms信息;

在这之前,需要在索引生成时设置storeTermVector为true。比如:
doc.Add(Field.Text("contents", reader, true));

具体参考:http://lqgao.spaces.live.com/blog/cns!3BB36966ED98D3E5!408.entry?_c11_blogpart_blogpart=blogview&_c=blogpart#permalink\

------------------------------------
可能是我的问题没问好,LS答‘歪’了,不过还是很感谢~ 同时也给了我一个优化效率的提示~
Global site tag (gtag.js) - Google Analytics