[英]Analyzer in Solr QueryParserPlugin
我写了一个QueryParser,看起来有点像Lucene的QueryParser
。 我已经编写了一个简单的QParser
和一个QParserPlugin
,我可以使用它们使用QueryParser。
剩下的一个问题是:在哪里可以获得对Solr模式中配置的Analyzer
的引用? 或者,如何将其注入以便在查询解析器的构造函数中使用分析器?
这是我在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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.