Java 设置lucene字段的索引属性?

Java 设置lucene字段的索引属性?,java,lucene,Java,Lucene,我有一个由第三方制作的大型lucene索引 我想搜索一个没有索引的字段。是否可以重新创建索引,该字段现在已被索引?我假设该字段存储正确?如果不是,你就不走运了 如果存储了,您有几个选项,我认为最简单的是: 将所有文档转储为csv输出() 将该字段的架构更改为index=true 然后重新编制所有这些文件的索引(csv输出也可用于更新) 我自己解决了,只用了一个索引阅读器和一个作者。 我不知道这是不是正确的方法。该字段是一个字符串字段(已存储),因此在本例中,它只起作用 IndexReader=I

我有一个由第三方制作的大型lucene索引


我想搜索一个没有索引的字段。是否可以重新创建索引,该字段现在已被索引?

我假设该字段存储正确?如果不是,你就不走运了

如果存储了,您有几个选项,我认为最简单的是:

  • 将所有文档转储为csv输出()

  • 将该字段的架构更改为index=true

  • 然后重新编制所有这些文件的索引(csv输出也可用于更新)


  • 我自己解决了,只用了一个索引阅读器和一个作者。 我不知道这是不是正确的方法。该字段是一个字符串字段(已存储),因此在本例中,它只起作用

    IndexReader=IndexReader.open(…);
    IndexWriter writer=新的IndexWriter(…);
    对于(int i=0;i
    您应该注意,这将只获取文档的存储字段。使用这种方法,索引但未存储的字段将丢失。对于您的情况来说,这可能很好,但对于内容较多的字段来说,仅对其进行索引是相当典型的。为了了解情况,是否有一种有效的方法用于这种情况?如果您可以控制如何构建索引,请将相关字段更改为要索引的字段。如果您不控制索引构建过程,那么您可以像在那里所做的那样,将其作为辅助索引保留,仅用于此类搜索,并在主索引(而不是DocId)中存储指向相应记录的指针。您无法从索引中重建未存储的数据。