我写了一个看起来有点像 Lucene 的 QueryParser QueryParser
。我写了一个简单QParser
的和一个QParserPlugin
我可以使用我的 QueryParser 的。
剩下的一个问题是:我在哪里可以获得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);
}
}