我写了一个看起来有点像Lucene的QueryParser
的QueryParser。我写了一个简单的QParser
和QParserPlugin
,我可以使用我的QueryParser。
剩下的一个问题是:我在哪里获得对Solr架构中配置的Analyzer
的引用?或者我如何注入它以将Analyzer用于我的查询解析器的constructor?
答案 0 :(得分:0)
以下是我在Java中的(简化)解决方案,用于使用MyQueryParser
中架构文件中配置的Analyzer(和默认字段)。
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);
}
}