我需要在lucene索引中填充所有字段名称的下拉列表,并且需要显示这些值。我能够成功地使用
var luceneIndexReader IndexReader.Open("D:\path_to\index_directory", true);
var allAvailableFieldNames = luceneIndexReader.GetFieldNames(IndexReader.FieldOption.ALL);
唯一的问题是我需要在下拉列表中仅包含“已存储”字段。此列表包括其中的所有“索引”和/或“存储”字段。如果字段有任何“存储”值,从而过滤掉这个列表,有没有办法查询/搜索索引?
答案 0 :(得分:4)
问题是索引中的每个文档都可以包含包含存储字段的不同字段。由于那些不是storef作为反向索引(它们是按文档存储的),因此无法从IndexReader中检索它们。您需要检索一个特定文档,例如Document doc = indexReader.document(1);
并致电Fieldable fields[] = doc.getFields();
。然后迭代它们并检查:field.isStored();
。