0

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

剩下的一个问题是:我在哪里可以获得Analyzer对 Solr 模式中配置的引用?或者我如何将它注入到我的查询解析器的构造函数中使用分析器?

4

1 回答 1

0

这是我在 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);
    }
}
于 2012-09-11T12:37:21.270 回答