显示Lucene索引的内容

显示Lucene索引的内容,lucene,luke,Lucene,Luke,我正在尝试调试Lucene中的索引文档,我需要查看索引的内容,以便准确地查看文档是如何被索引的。据说Luke是这样做的,但是没有任何相关的文档,当我把它指向索引目录时(在其中任何一个目录下,虽然我不知道为什么它不能找出哪一个是正确的),我什么也得不到。确实有一些简单的方法可以做到这一点吗?卢克是一个简单的方法。你运行它,浏览到索引,然后开始比赛。再简单不过了。通过使用Luke的一些特性,也许它会帮助您继续使用它 还有其他的工具,比如,这也是一个很好的工具,但它比Luke更难开始 如果你能提供一些

我正在尝试调试Lucene中的索引文档,我需要查看索引的内容,以便准确地查看文档是如何被索引的。据说Luke是这样做的,但是没有任何相关的文档,当我把它指向索引目录时(在其中任何一个目录下,虽然我不知道为什么它不能找出哪一个是正确的),我什么也得不到。确实有一些简单的方法可以做到这一点吗?

卢克是一个简单的方法。你运行它,浏览到索引,然后开始比赛。再简单不过了。通过使用Luke的一些特性,也许它会帮助您继续使用它

还有其他的工具,比如,这也是一个很好的工具,但它比Luke更难开始


如果你能提供一些关于你和Luke遇到的问题的细节,也许你能得到一些帮助。

我对Luke了解不多,但我和Lucene合作过很多次。即使使用Luke,查看索引内容也可能很棘手,因为您只能查看存储字段的数据

在我做的上一个Lucene项目(实际上是Solr)中,我几乎将每个字段都标记为已索引但未存储。对于这些情况,为了测试文档是否具有正确的索引项,我将查询具有给定主键和预期项的文档的索引。如果它匹配,那么我知道它用这个词索引了它

例如,要查看产品5是否为英语,我会说 productId:5和lang:en


我知道这并不能直接回答您关于如何使用Luke的问题,但如果Luke不能帮助您,这可能是一种替代方法。

Luke尝试在您使用“文档”选项卡中的“重建和编辑”按钮时显示索引但未存储的字段中的值。如果我没记错的话,停止词不会出现在“重建和编辑”显示中——您会看到诸如“null_1”、“null_2”等内容。

可以从源代码编译luke,同时将弹性搜索格式添加到luke MetaINF/服务中

只要遵循这个方法

使用LUcene测试自定义发布格式/编解码器也可以遵循这一点

ElasticSearch使用自定义的发布格式(发布格式定义了反转索引在内存/磁盘上的表示方式),Luke对此一无所知。要告诉Luke ES postings格式,请按照以下步骤添加SPI类

  • 克隆源存储库:
  • 2.将对所需ElasticSearch版本的依赖项添加到Luke项目的pom文件中:

    <!-- ElasticSearch -->
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>1.1.1</version>
    </dependency>
    
  • 将ElasticSearch发布格式添加到临时文件:

    $echo“org.elasticsearch.index.codec.postingsformat.BloomFilterPostingsFormat”

    /tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat $echo“org.elasticsearch.index.codec.postingsformat.elasticsearch 090postingsformat” /tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat $echo“org.elasticsearch.search.suggest.completion.Completion090PostingsFormat” /tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat

  • 将修改后的文件重新打包回jar:

    $jar-uf target/luke-with-deps.jar-C tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat

  • 跑卢克

    美元/卢克.sh


  • 除了1)我知道有数据被索引了,因为搜索结果会回来;2) 有四个不同的索引目录(我不知道是什么原因),我试着指向它们;3) Luke在这些目录中没有显示任何记录。现在,这是Lucene的Elasticsearch包装器,所以我想它可能是在某个疯狂的地方填充数据“我没有看,但我假设这不是邪恶的侏儒写的……我相信ElasticSearch中的索引目录是按配置的,在类似
    data:/var/data/ElasticSearch
    的条目中。这就是你看过的地方吗?好吧,Luke不再支持Lucene的最新版本了。。。这个任务还有其他工具吗?@pierocy-嗯,我还没有确定,但我相信Lucene 5.2.0应该可以。至于5.3.0,它一周前才发布。如果需要做一些更改来支持它,可能会有一点延迟。Luke from确实支持最新的Lucene(现在是7.2.x)。好的,经过几天的反复思考,据我所知,这实际上是Elasticsearch包装的Lucene,这就是Luke无法读取索引的原因,显然,没有办法显示索引的内容。糟糕,不,ES使用正常的Lucene指数。。。你一定有错误的版本。下载这些内容以获得最新版本:我会记住这一点,以防以后它会有所帮助,尽管不幸的是,在这种情况下,它不是很有用。谢谢你。
    $ unzip target/luke-with-deps.jar META-INF/services/org.apache.lucene.codecs.PostingsFormat -d ./tmp/
    Archive:  target/luke-with-deps.jar
      inflating: ./tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat