我创建了以下文档:
var document = new Document();
document.Add(new Field("category", "foo", Field.Store.YES, Field.Index.NOT_ANALYZED));
...
我有大约1000万份文件,属于8个不同的类别。我想通过执行搜索查询获得所有不同的类别(获取所有文档并读取category
字段的值)。那可行吗?
另一种方法是在索引重建时创建类别列表,并将这些值写入数据库。
非常感谢任何帮助!
答案 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();
}