なぜあなたはQueryParser
で始まらないのですか?あなたのユースケースではうまくいくかもしれません。
あなたの質問からは分かりませんが、入力フィールド( '検索')と国コードのコンボボックスがあるとします。その後、これらの値を読み、クエリを作成します。
// you don't have to use two parsers, you can do this using one.
QueryParser nameParser = new QueryParser(Version.LUCENE_CURRENT, "name", your_analyzer);
QueryParser hobbiesParser = new QueryParser(Version.LUCENE_CURRENT, "hobbies", your_analyzer);
BooleanQuery q = new BooleanQuery();
q.add(nameParser.parser(query), BooleanClause.Occur.SHOULD);
q.add(hobbiesParser.parser(query), BooleanClause.Occur.SHOULD);BooleanClause.Occur.SHOULD);
/* Filtering by country code can be done using a BooleanQuery
* or a filter, the difference will be how Lucene scores matches.
* For example, using a filter:
*/
Filter countryCodeFilter = new QueryWrapperFilter(new TermQuery(new Term("country_code",)));
//and finally searching:
TopDocs topDocs = searcher.search(q, countryCodeFilter, 10);
ありがとう、それは私が必要なものでした。私はまた、冒頭に別の+を追加しました。 – epeleg