0

2 つの lucene クエリがあります。

1)

Term term = new Term(Properties.LUCENE_APPARTMENT_ADDRESS,address);
Query termQuery = new TermQuery(term);
TopDocs topDocs = indexSearcher.search(termQuery, 20); 

および 2)

QueryParser queryParser = new QueryParser(Version.LUCENE_36, Properties.LUCENE_APPARTMENT_ADDRESS, analyzer);
Query query = queryParser.parse(address);
ScoreDoc[] queryResults = indexSearcher.search(query, 20).scoreDocs; 

最初のものは1つの結果を返し、2番目のものは何も返さないのはなぜですか? (住所は1語以上)

4

1 に答える 1

4

を使用するQueryParserと、インデックス作成時と同じ一連のアクション (トークン化、小文字化、ストップワードなど) を実行するアナライザーが使用されます。

raw を使用する場合TermQuery、これらすべての手順を自分で行う必要があります。

あなたのアナライザーは何か特別なことをしProperties.LUCENE_APPARTMENT_ADDRESSていると思いますが、アドレスを渡すときはそうではないTermQueryため、検索結果の不一致が生じます。

于 2012-11-15T16:22:38.907 に答える