2

Lucene インデックス文字列フィールドから単語を検索するには?

フィールドTITLEのlucene インデックスがあり、ドキュメントのタイトルが含まれています

例:テレビが機能しない、モバイルが機能しない

タイトルから特定の単語を検索したい。

以下のコードは、FULL_CONTENET を TITLE に変更すると、結果が得られません。

Query qry = null;
qry = new QueryParser(FULL_CONTENT, new SimpleAnalyzer()).parse("not");
Searcher searcher = null;
searcher = new IndexSearcher(indexDirectory);
Hits hits = null;
hits = searcher.search(qry);
System.out.println(hits.length());
4

2 に答える 2

1

「NOT」は Lucene クエリ構文演算子であるため、問題になる可能性があります。

于 2014-02-14T23:53:47.427 に答える
-1

問題はStringAnalyzer、小文字フィルターを適用することです。クエリは小文字になります。

例: タイトル: モバイル。

StringField分析を適用しないため、テキストはそのまま索引付けされます。に変更StringFieldするTextFieldと、 によって分析されStringAnalyzer、インデックスで小文字に変換されます。

置換StringAnalyzerするとWhitespaceAnalyzer、小文字フィルターがなく、再び機能します (クエリが小文字に変換されないため)。

于 2015-04-01T15:09:51.527 に答える