Apache Lucene搜索 - 关键字失败 - IN

时间:2013-03-05 06:09:44

标签: lucene

使用Apache Lucene Search和我的java应用程序。查询建立在使用国家代码搜索人名(字母)(通常表示为两个字母的单词,示例 - 印度,美国 - 美国,英国 - 英格兰等)

然而问题出现了,当我尝试使用查询条件搜索值为Alphabet =“Steve”和Country =“IN”时,搜索查询不会产生任何值,即使记录存在,只有选择国家/地区时才会IN(印度)

alphabet = alphabet.trim() + "*";
query = new QueryParser(Version.LUCENE_30, searchFor[0], analyzer).parse(alphabet.trim());
mainQuery.add(query, BooleanClause.Occur.MUST);
}
if ((country != null) && (country.trim().length() > 0)) {
query = new QueryParser(Version.LUCENE_30, searchFor[1], analyzer).parse(country.trim());
mainQuery.add(query, BooleanClause.Occur.MUST);
}

1 个答案:

答案 0 :(得分:1)

您希望将KeywordAnalyzer用于国家/地区代码(不需要标记化或大小写/停止字折叠)等内容;对于人名,WhitespaceAnalyzer可能是个不错的选择。 PerFieldAnalyzerWrapper将两者结合起来。例如:

Analyzer ka = new KeywordAnalyzer(Version.LUCENE_30)
Analyzer wa = new WhitespaceAnalyzer(Version.LUCENE_30)
PerFieldAnalyzerWrapper wrapper =
      new PerFieldAnalyzerWrapper(ka);
wrapper.addAnalyzer("countrycode", ka);

现在只需使用IndexWriter创建wrapper