Solr QueryParserPlugin中的分析器

时间:2012-09-10 11:24:34

标签: solr

我写了一个看起来有点像Lucene的QueryParser的QueryParser。我写了一个简单的QParserQParserPlugin,我可以使用我的QueryParser。

剩下的一个问题是:我在哪里获得对Solr架构中配置的Analyzer的引用?或者我如何注入它以将Analyzer用于我的查询解析器的constructor

1 个答案:

答案 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);
    }
}