【问题标题】:Can't read field content from lucene index无法从 lucene 索引中读取字段内容
【发布时间】:2017-04-23 10:02:16
【问题描述】:

所以我有一个由 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)

【问题讨论】:

  • 您是否在搜索请求中指定了任何字段列表?
  • @DarshanMehta 一点也不
  • 能否展示相关部分的索引代码?

标签: java indexing lucene


【解决方案1】:

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

您可以将 TextField 存储为:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多