`
13shu
  • 浏览: 73025 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

solr 自定义 dismax查询方式

    博客分类:
  • solr
阅读更多

1、在solrconfig.xml中增加

<queryParser name="imdismax"
		class="com.szhtp.search.parse.IMDisMaxQParserPlugin" />
<requestHandler name="imdismax" class="solr.SearchHandler">
		<lst name="defaults">
			<str name="defType">imdismax</str>

			<!-- 查询关键字和设置权重 -->
			<str name="qf">keywords^3 question^2 answer^0.4</str>

			<str name="pf">keywords^3 question^2 answer^0.4</str>

			<str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>

			<!-- 输出时显示那些字段 -->
			<str name="fl">id,answer,score</str>

			<!-- 设置PhraseSlop的坡度 -->
			<int name="ps">100</int>

			<str name="hl.fl">answer</str>

			<!-- 默认查询语句用于容错处理 -->
			<str name="q.alt">*:*</str>

			<!-- 每个snippet返回的最大字符数。默认是100.如果为0,那么该字段不会被fragmented且整个字段的值会被返回。大字段时不会这么做。
			这里的answer=<str name="hl.fl">answer</str>
			  -->
			<str name="f.answer.hl.fragsize">50</str>

			<!-- instructs Solr to return the field itself if no query terms are
				found -->
			<!-- 如果没有生成snippet(没有terms 匹配),那么使用另一个字段值作为返回 -->
			<str name="f.answer.hl.alternateField">answer</str>

			<!-- 这个是solr制定fragment算法的扩展点。gap是默认值。
				regex是另一种选项,这种选项指明highlight的边界由一个正则表达式确定。
				这是一种非典型的高级选项。为了知道默认设置和fragmenters (and formatters)是如何配置的,
				可以看看solrconfig.xml中的highlight段 -->
			<str name="f.answer.hl.fragmenter">regex</str>

			<str name="tie">0.1</str>
		</lst>
	</requestHandler>

 

2、创建类IMDisMaxQParserPlugin.java

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();
    }
}

 

分享到:
评论
3 楼 青春的、脚步 2013-02-21  
<str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>  这个是什么意思
2 楼 ihuangweiwei 2012-09-25  
这个设置了有效果吗  <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str> 
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]

相关推荐

    solr-6.6.0压缩包

    - Solr支持丰富的查询语法,如Lucene Query Parser语法、DisMax查询解析器等。 - 可以自定义排序规则,根据相关性、时间或其他字段值进行结果排序。 6. **高级特性** - ** faceting(聚类)**:允许用户按类别...

    solr-8.3.0.tgz

    - **查询语法**:Solr支持多种查询语法,如Lucene查询语法、DisMax查询解析器、edismax查询解析器等。 - **高亮显示**:Solr可以高亮显示搜索结果中的匹配部分,提高用户体验。 - **排序与评分**:Solr可以根据...

    solr-6.4.1 安装包.zip

    1. **Query Syntax**:Solr支持多种查询语法,包括标准查询解析器(QParser)、Lucene查询语法(LQ)和DisMax查询解析器。 2. **Faceting**:提供分类统计,帮助用户快速了解搜索结果的分布情况。 3. **Highlighting...

    apache.solr.4.cookbook

    - **查询解析**:利用Solr的DisMax Query Parser等工具,增强查询解析能力,提升用户体验。 - **结果排序与过滤**:提供灵活的排序选项,如按日期、相关性或自定义字段排序,同时支持复杂的过滤条件。 #### 4. 高级...

    Apache.Solr.3.1.Cookbook

    - **高级查询语法**: 介绍 Solr 的 QueryParser 和 DisMax 查询解析器,以及如何使用它们来构建复杂的查询。 - **结果排序与分组**: 掌握排序和分组查询结果的方法,以及如何实现自定义排序策略。 4. **性能调优**...

    solr开发指南.zip

    Solr的查询能力强大且灵活,支持多种查询语法,包括标准查询解析器(Standard Query Parser)、简写查询解析器(DisMax Query Parser)等。此外,Solr还支持自定义查询解析器和过滤器,以满足特定的查询需求。用户...

    Apache Solr lucene 搜索模块设计实现

    - **Query Parsers**:允许自定义查询解析器,如 DisMax QParser 和 Function QParsers,支持多种查询类型和功能查询。 - **Text Analysis**:分析器、分词器和过滤器插件用于处理文本输入,如 Whitespace ...

    solr 5.4.0 完整包,包含ikanalyzer 中文分词器(新)

    6. **查询和分析功能**:Solr提供了丰富的查询语法,如Lucene Query Parser (LQP)、DisMax、EDisMax等,以及高级的查询和过滤选项。同时,Solr还支持实时添加、删除和更新文档,提供实时搜索能力。 7. **XML 和 ...

    solr-jars.zip

    8. **查询和结果处理(Query and Result Handling)**:Solr 提供了丰富的查询语法(如 Lucene 查询语法和 DisMax 请求处理器),并支持对搜索结果进行排序、高亮显示、分页等操作。 9. **Faceting(分类浏览)**:...

    solr企业级全文检索

    - **查询API**:Solr提供了丰富的查询语言(如Lucene Query Parser、DisMax和edismax),支持布尔运算、通配符、范围查询等。 - **高亮显示**:突出显示查询结果中的匹配部分,增强用户体验。 - **排序**:根据...

    solr-book:Solr书籍范例程式码

    4. **查询与搜索**:学习Solr的查询语法,如使用Lucene Query Parser、DisMax查询解析器,以及如何构造复杂的查询表达式,如布尔运算符、短语匹配、范围查询等。 5. **结果排序与评分**:理解如何自定义排序规则,...

Global site tag (gtag.js) - Google Analytics