在lucene指数中搜索

时间:2013-08-13 22:23:51

标签: java lucene

我在列上创建了一个lucene(3.0.1)索引,用文本进行搜索,在此文本上进行测试:

$GLD is a great example of why it does not make sense EVER to try and catch a falling knife.

如果我使用关键字"falling"进行搜索,它会给我结果,但我对"$GLD"

搜索没有任何意义

我正在使用standardAnalyzer:

String longString = "$GLD is a great example of why it does not make sense EVER to try and catch a falling knife."

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
doc.add(new Field("data", longString, Store.YES, Field.Index.ANALYZED));

由于设置了Field.Index.ANALYZED,因此应该创建令牌并且$GLD应该存在。分析器将从文本中删除停用词,在此过程中也会删除单词$GLD

3 个答案:

答案 0 :(得分:0)

Analyzer会更改您的文档字段。为什么不在搜索之前在查询中使用Analyzer。同时,QueryParser可以提供很多帮助。

答案 1 :(得分:0)

您应该检查StandardAnalyzerStandardAnalyzer可能会移除$并在其程序中使用LowerCaseFilter(我不确定,我只知道2.3和4.1 )。 LowerCaseFilter会将单词设为小写。当你搜索大写字母时,你不会得到任何东西。

您可以使用Luke检查索引中的标记化结果。

答案 2 :(得分:0)

使用Luke检查您的查询是否符合您的预期也很有帮助。