如何获取所有存储的值而不是Lucene.Net中字段的术语?

时间:2016-07-27 17:25:17

标签: lucene lucene.net

我看到了一个提取字段here

的所有可用字词的示例

它不适合我的porpouses的原因是因为术语和存储的值不同,例如"black cat"的存储值将作为两个术语"black""cat"进行重新设置。在我的代码中,我需要提取整个存储的值"black cat"

1 个答案:

答案 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(也有证明,它可以正常工作)