对Java Lucene忽略Field进行故障排除

Jak*_*raw 2 java lucene

我们目前正在使用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 
    )
);
Run Code Online (Sandbox Code Playgroud)

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

Result 1:
    title: Foo Bar
    market_local: Local

Result 2:
    title: Bar Foo
    market_local: National
Run Code Online (Sandbox Code Playgroud)

运行目标查询:

+( market_local:Local )
Run Code Online (Sandbox Code Playgroud)

不会找到任何结果.

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


UPDATE

安装了Luke,检查了最新的索引...现场market_local可用于搜索,所以如果我执行类似:

market_local:Local
Run Code Online (Sandbox Code Playgroud)

搜索工作正常(在卢克).我现在正在查看我们的Analyzer代码,有什么方法可以解决这个问题,因为我们的搜索应用程序使用Lucene 2.1.0并且最新版本的Luke使用的是2.3.0?

Dar*_*gue 6

对于调试Lucene,最好使用的工具是Luke,它允许你在索引本身中查看索引的内容,执行搜索等.我建议下载它,将它指向你的索引,并查看其中的内容.