【问题标题】:Troubleshoot Java Lucene ignoring Field排除 Java Lucene 忽略字段问题
【发布时间】:2010-09-07 17:45:40
【问题描述】:

我们目前正在使用 Lucene 2.1.0 进行网站搜索,但遇到了一个难题:我们的一个索引字段在目标搜索期间被忽略了。以下是将字段添加到索引中的文档的代码:

// Add market_local to index
contactDocument.add(
    new Field(
        "market_local"
        , StringUtils.objectToString(
            currClip.get(
                "market_local"
            )
        )
        , Field.Store.YES
        , Field.Index.UN_TOKENIZED 
    )
);

对索引运行查询 ( * ) 将返回以下结果:

Result 1:
    title: Foo Bar
    market_local: Local

Result 2:
    title: Bar Foo
    market_local: National

运行有针对性的查询:

+( market_local:Local )

找不到任何结果。

我意识到这是一个非常具体的问题,我只是想了解从哪里开始调试这个问题,因为我是 Lucene 新手。


更新

安装 Luke,检查最新索引...字段 market_local 在搜索中可用,所以如果我执行如下操作:

market_local:Local

搜索工作正常(在 Luke 中)。我现在正在检查我们的分析器代码,有什么办法可以将这个问题归结为我们的搜索应用程序使用的是 Lucene 2.1.0 而最新版本的 Luke 使用的是 2.3.0 吗?

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    Luke 与 Lucene 捆绑在一起,但您可以告诉 Luke 使用另一个版本的 Lucene。假设“lucene-core-2.1.0.jar”包含您要使用的 Lucene 2.1.0,“luke.jar”包含带有 Lucene 2.3.0 的 Luke。然后你可以使用以下命令启动 Luke。

    java -classpath lucene-core-2.1.0.jar;luke.jar org.getopt.luke.Luke

    (诀窍是将您的 Lucene 版本放在类路径上的 Luke 之前。此外,这是在 Windows 上。在 Unix 上,将“;”替换为“:”。)

    你可以签到卢克,

    +(market_local:本地)

    被重写为

    market_local:本地

    如果the rewrite(IndexReader) method of the Query object 被调用。这两个查询应该是等价的,因此 2.1 中可能存在错误。如果必须使用 2.1,可以尝试在将 Query 对象传递给 IndexSearcher 之前手动调用该方法。

    【讨论】:

      【解决方案2】:

      另一件简单的事情是使用调试器或日志语句来检查

      StringUtils.objectToString(currClip.get("market_local"))

      确保它是你认为的那样。

      【讨论】:

        【解决方案3】:

        Lucene FAQ 中的section on "Why am I getting no hits?" 提供了一些您可能会觉得有用的建议。您正在使用 Field.Index.UN_TOKENIZED,因此不会使用分析器进行索引(我认为)。如果您在搜索时使用分析器,那么这可能是问题的根源 - 索引分析器和搜索分析器应该相同,以确保您获得正确的命中。

        【讨论】:

          【解决方案4】:

          对于调试 Lucene,最好使用的工具是 Luke,它可以让您在索引中四处寻找索引,执行搜索等。我建议下载它,将其指向您的索引,然后看看里面有什么。

          【讨论】:

            猜你喜欢
            • 2022-11-23
            • 1970-01-01
            • 2014-10-16
            • 2018-12-18
            • 2020-02-20
            • 2014-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多