Lucene ベースの検索エンジン サイトに新しいフィールドを追加したいと考えていますが、クエリをインターセプトして、サーチャーに渡す前に変更できるようにしたいと考えています。
たとえば、各ドキュメントにはフィールドがあるuserid
ため、特定のユーザーが作成したドキュメントを ID でfoo bar userid:123
検索できますが、ユーザー名で検索する機能を追加したいと考えています。
(ドキュメントではなくuser:RonaldMcDonald
)クエリにフィールドを追加したいのですが、その用語をインターセプトして同等の用語に置き換えたいと考えています (自分のコードで "RonaldMcDonald" を "123" に変換する必要があります)。 .userid:123
私が今使っている簡単なコードは次のとおりです。
Int32 get = (pageIndex + 1) * pageSize;
Query query;
try {
query = _queryParser.Parse( queryText );
} catch(ParseException pex) {
log.Add("Could not parse query.");
throw new SearchException( "Could not parse query text.", pex );
}
log.Add("Parsed query.");
TopDocs result = _searcher.Search( query, get );
Query クラスを確認しましたが、用語を取得、削除、または挿入する方法がわかりません。