0

Luceneのに少し似ているQueryParserを作成しましたQueryParser。QueryParserを使用できるシンプルなものを作成しましたQParserQParserPlugin

残っている質問の1つ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 に答える