20

我正在尝试在 Lucene 中调试索引文档,并且我需要查看索引的内容,以便准确了解文档是如何被索引的。据称卢克这样做了,但是没有任何文档,当我将它指向索引目录时(在其中任何一个,虽然我不知道为什么它无法自行判断哪个是正确的) ,我什么都得不到。当然有一些简单的方法可以做到这一点?

4

4 回答 4

14

卢克是做到这一点的简单方法。您运行它,浏览到索引,然后开始比赛。再简单不过了。 这篇博客文章逐步介绍了使用 Luke 的一些功能,也许它会帮助你开始使用它。

还有其他工具,比如LIMO也是一个很好的工具,但它比 Luke 更难入门。

也许如果您详细说明您在 Luke 遇到的问题,您将能够获得一些帮助。

于 2013-01-05T00:29:43.840 回答
3

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

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

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

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

于 2013-01-05T00:33:25.173 回答
1

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

于 2013-01-07T12:10:22.117 回答
1

可以在将 Elastic 搜索格式添加到 Luke MetaINF/services 的同时从源代码编译 luke。

只需遵循这种方法

将 Luke 与 ElasticSearch 结合使用

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

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

  1. 克隆 Luke 源代码库:

2.在 Luke 项目的 pom 文件中添加你需要的 ElasticSearch 版本的依赖:

<!-- ElasticSearch -->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>1.1.1</version>
</dependency>
  1. 编译 Luke jar 文件(创建 target/luke-with-deps.jar):

    $ mvn 包

4.将 Luke 的已知发帖格式列表解压到一个临时文件中:

$ 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
  1. 将 ElasticSearch 发布格式添加到临时文件:

    $ echo "org.elasticsearch.index.codec.postingsformat.BloomFilterPostingsFormat"

    ./tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat $ echo "org.elasticsearch.index.codec.postingsformat.Elasticsearch090PostingsFormat" ./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

  2. 将修改后的文件重新打包到 jar 中:

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

  3. 运行卢克

    $./luke.sh

于 2016-07-05T12:38:45.983 回答