Lucene.Net - 获取不同的类别

时间:2012-03-16 10:22:45

标签: c# lucene lucene.net

我创建了以下文档:

var document = new Document();
document.Add(new Field("category", "foo", Field.Store.YES, Field.Index.NOT_ANALYZED));
...

我有大约1000万份文件,属于8个不同的类别。我想通过执行搜索查询获得所有不同的类别(获取所有文档并读取category字段的值)。那可行吗?

另一种方法是在索引重建时创建类别列表,并将这些值写入数据库。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

查看IndexReader.Terms()方法。

如果您为字段指定一个空的术语,它将返回包含该字段的所有术语的TermEnum。

TermEnum terms = indexReader.Terms(new Term("category"));
// enumerate the terms

答案 1 :(得分:0)

扩展Beaulac的解决方案以供将来使用......

要获得唯一的结果集,您必须迭代这样的术语:

while (null != terms.Term) {
    If (term.Field.Equals("category")) {
        // do something with this term
    }
    terms.Next();
}