Luceneのに少し似ているQueryParserを作成しましたQueryParser
。QueryParserを使用できるシンプルなものを作成しましたQParser
。QParserPlugin
残っている質問の1つAnalyzer
は、Solrスキーマで構成されているものへの参照をどこで入手できるかということです。または、アナライザーを使用するためにクエリパーサーのコンストラクターに注入するにはどうすればよいですか?
Luceneのに少し似ているQueryParserを作成しましたQueryParser
。QueryParserを使用できるシンプルなものを作成しましたQParser
。QParserPlugin
残っている質問の1つAnalyzer
は、Solrスキーマで構成されているものへの参照をどこで入手できるかということです。または、アナライザーを使用するためにクエリパーサーのコンストラクターに注入するにはどうすればよいですか?
これは、のスキーマファイルから構成されたアナライザー(およびデフォルトフィールド)を使用するためのJavaでの私の(簡略化された)ソリューションですMyQueryParser
。
public class MyParserPlugin extends QParserPlugin {
@Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new MyQParser(qstr, localParams, params, req);
}
}
class MyQParser extends QParser {
public MyQParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
super(qstr, localParams, params, req);
}
@Override
public Query parse() throws ParseException {
// Getting info from the schema
String field = this.getReq().getSchema().getDefaultSearchFieldName();
Analyzer analyzer = this.getReq().getSchema().getQueryAnalyzer();
// Here we go
MyQueryParser parser = new MyQueryParser(Version.LUCENE_36, field, analyzer);
return parser.parse(this.qstr);
}
}