0

Java アプリケーションで Apache Lucene Search を使用しています。クエリは、国コード (通常は 2 文字の単語で表されます。例 - IN - インド、米国 - 米国、英国 - イギリスなど) を使用して人物の名前 (アルファベット) を検索することに基づいています。

ただし、クエリ条件を Alphabet="Steve" および Country="IN" として値を検索しようとすると、国が IN(India )

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);
}
4

1 に答える 1

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です。

于 2013-03-05T08:53:49.007 に答える