读书人

solr 自定义 dismax查询形式

发布时间: 2012-09-22 21:54:54 作者: rapoo

solr 自定义 dismax查询方式

1、在solrconfig.xml中增加

<queryParser name="imdismax"/><requestHandler name="imdismax" name="code">public class IMDisMaxQParserPlugin extends QParserPlugin{    public static String NAME = "imdismax";    public void init(NamedList args) {    }    public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {      return new IMDisMaxQParser(qstr, localParams, params, req);    }}

?

3、创建类IMDisMaxQParser.java 可以在里面增加中文分词

public class IMDisMaxQParser extends DisMaxQParser{    public IMDisMaxQParser(String qstr, SolrParams localParams,            SolrParams params, SolrQueryRequest req)    {        super(qstr, localParams, params, req);        if (null == this.qstr)        {            return;        }        Analyzer analyzer = req.getSchema().getQueryAnalyzer();        if (null == analyzer)        {            return;        }        StringBuilder norm = new StringBuilder();        try        {//对question分词            TokenStream tokens = analyzer.reusableTokenStream("question",                    new StringReader(this.qstr));            tokens.reset();            Token token = tokens.next();            while (token != null)            {                norm.append(                        new String(token.termBuffer(), 0, token.termLength()))                        .append(" ");                token = tokens.next();            }        }        catch (Exception ex)        {                    }        if (norm.length() > 0)            this.qstr = norm.toString();    }}

?

1 楼 poppop_2000 2012-07-11 [b][/b][b][/b][b][/b][b][/b][b][/b][b][/b][b][/i][i][/i][i][/i][i][/u][u][/u][u][/u][u][/b]

读书人网 >软件架构设计

热点推荐