我看到了一个提取字段here
的所有可用字词的示例它不适合我的porpouses的原因是因为术语和存储的值不同,例如"black cat"
的存储值将作为两个术语"black"
和"cat"
进行重新设置。在我的代码中,我需要提取整个存储的值"black cat"
。
答案 0 :(得分:0)
是的,你可以这样做。我不是C#程序员,但希望你能理解Java代码。
IndexReader reader = DirectoryReader.open(dir);
final int len = reader.maxDoc();
for (int i = 0; i < len; ++i) {
Document document = reader.document(i);
List<IndexableField> fields = document.getFields();
for (IndexableField field : fields) {
if (field.fieldType().stored()) {
System.out.println(field.stringValue());
}
}
}
所以,基本上,我遍历所有文档,获取所有字段,如果存储,则获取数据。您可以按照您需要的字段名称对其进行过滤。
可以在这里找到完整的测试 - https://raw.githubusercontent.com/MysterionRise/information-retrieval-adventure/master/src/main/java/org/mystic/GetAllStoredFieldValues.java(也有证明,它可以正常工作)