所以我有一个由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)进行的
答案 0 :(得分:2)
嗯,你没有提供足够的信息以确定,但我敢打赌,这个字段没有存储。例如,如果您使用TextField
,并使用Reader
或TokenStream
作为来源,则该字段将不会被存储,并且可以搜索,但您将无法使用检索它。
您可以将TextField存储为:
Field titleField = new TextField("title", "The Sun Also Rises", Field.Store.YES);