solr 自定义 dismax查询方式
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<-1 5<-2 6<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();
- }
- }
solr 自定义 dismax查询方式相关推荐
- Solr的函数查询(FunctionQuery)
作用 通过函数查询让我们可以利用 numeric域的值或者与域相关的的某个特定的值的函数,来对文档进行评分. 如何使用 这里主要有两种方法可以使用函数查询,这两种方法都是通过solr http 接口的 ...
- 标准查询分析器:Solr的默认查询解析器也称为“Lucene”解析器。
标准查询分析器:Solr的默认查询解析器也称为"Lucene"解析器. 标准查询解析器的主要优点是,它支持一种健壮且相当直观的语法,允许您创建各种结构化查询.最大的缺点是,与设计为 ...
- jpa 动态查询条件 数组_Spring data jpa 复杂动态查询方式总结
一.Spring data jpa 简介 首先JPA是Java持久层API,由Sun公司开发, 希望整合ORM技术,实现天下归一. 诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,目前也是 ...
- Solr所有的查询解析器Query Parsers(转:http://blog.csdn.net/jiangchao858/article/details/53859731)
摘要: Solr除了支持常见的解析器之外,还有一些特殊用途的解析器,为了便于之后查阅,总结一下.本文整理自Solr官方文档. 解析器 说明 Standard Query Parser Solr的标准查 ...
- IBatis.Net学习笔记五--常用的查询方式
在项目开发过程中,查询占了很大的一个比重,一个框架的好坏也很多程度上取决于查询的灵活性和效率. 在IBatis.Net中提供了方便的数据库查询方式.在Dao代码部分主要有两种方式: 1.查询结果为一个 ...
- Solr学习笔记——查询
1.进入Solr管理界面http://localhost:8983/solr/ 可以看到Query中有若干的参数,其意义如下(参考:http://www.jianshu.com/p/3c4cae5de ...
- Spring Data Solr教程:查询方法
我们已经了解了如何配置Spring Data Solr. 我们还学习了如何向Solr索引添加新文档,如何更新现有文档的信息以及从Solr索引删除文档. 现在是时候继续前进,学习如何使用Spring D ...
- jeecg自定义datagrid查询
jeecg自定义datagrid查询 为什么要写这篇文章? 我们了解,使用 jeecg 提供的 CriteriaQuery 查询方式,确实能满足绝大数的需求,但是往往有那么个比较复杂的情况,需要我们直 ...
- idea查询类_Spring Security入门(三): 基于自定义数据库查询的认证实战
0 引言 在笔者的上一篇文章中Spring Security入门(二):基于内存的认证一文中有提到过Spring Security实现自定义数据库查询需要你实现UserDetailsService接口 ...
最新文章
- 我的第一份工作是个小公司
- HTTP 各版本特点与区别
- DBgrid 第一列加入CheckBox,点击列头 全选/全消
- c++ map 修改value_C++知识分享之STL容器:set 容器与 map 容器的简单应用
- Python 中的 if __name__ == '__main__' 该如何理解
- Geometric-Transformations图像几何变换halcon算子,持续更新
- 可能用得上的jquery 插件
- [转]粤语发音字典-粤语翻译
- 文件的上传、文件的下载、I18N国际化
- Git bash的中文化支持
- 基于内容的视频标注——关键帧图象层标注
- c++两个文档匹配数据_MongoDB 数据库的命名、设计规范
- 关于Android发送邮件
- 南自以太网103规约
- 如何清理和删除 Docker 镜像
- 服务器虚拟化基础hcna,华为云计算全新大纲课程 乾颐堂HCNA-Cloud服务器虚拟化云计算实战课程 HCNA认证课程...
- c++自动抢购_淘宝 2020双十一最新版 全自动做任务软件 超级星秀猫 来了!上车~...
- 使用CXF+Spring发布WebService,启动报错
- springboot下载excel模板
- 一个完整简单而又强力的计算器程序--用python实现(Python3.7)
热门文章
- python中的迭代器,生成器,闭包,装饰器,@property
- opencv学习笔记10:阈值分割
- 【Python】身体质量指数BMI
- OpenCASCADE:下载安装
- wxWidgets:用于测试 TAB 导航的示例
- wxWidgets:wxDC类用法
- wxWidgets:wxBannerWindow类用法
- boost::replace_copy相关的测试程序
- boost::hana::iterate用法的测试程序
- boost::grid_graph用法的测试程序