无法从lucene索引中读取字段内容

时间:2017-04-23 10:02:17

标签: java indexing lucene

所以我有一个由lucene(Java)创建的索引。 我正在尝试搜索索引如下

TopDocs result = searcher.search(query, maxResults);
for (ScoreDoc scoreDoc : result.scoreDocs) {
    Document doc = searcher.doc(scoreDoc.doc);
    LogService.logger().warning("Title| " + doc.get("title"));
    LogService.logger().warning("URL| " + doc.get("url"));

代码打印url字段,但为标题字段打印null

我的第一个猜测是字段名称可能存在问题,或者内容实际上是空的。

然而,我使用Lucene Luke(基于GUI的检查工具)进行了双重检查,字段名称似乎没问题且内容绝对不是null

我不确定这是什么原因......有什么建议吗?

P.S:索引和搜索都是使用相同的lucene版本(6.2.1)进行的

1 个答案:

答案 0 :(得分:2)

嗯,你没有提供足够的信息以确定,但我敢打赌,这个字段没有存储。例如,如果您使用TextField,并使用ReaderTokenStream作为来源,则该字段将不会被存储,并且可以搜索,但您将无法使用检索它。

您可以将TextField存储为:

Field titleField = new TextField("title", "The Sun Also Rises", Field.Store.YES);