学习目标
  
  1.掌握SOLR的搜索工作流程;
  
  2.掌握solr搜索的表示语法及查询解析器
  
  3.熟悉solr搜索的JSON格式 API
  
  Solr搜索流程介绍
  
  回顾,使用 lucene进行搜索的步骤:
  
  Solr搜索的工作流程
  
  查看内核的solrconfig.xml文件,了解搜索的请求处理器配置
  
  对比看_default、sample_techproducts_configs两种配置集的内核配置。
  
  配置中的参数元素介绍见下一页。
  
  仔细查看techproducts 内核的solrconfig.xml的
  
  /select
  
  /query
  
  /browse
  
  前面流程图中的各项工作都在哪里完成?
  
  在SearchHandler
  
  它是如何完成的?
  
  参数元素说明
  
  SearchHandler介绍
  
  查询请求在SearcheHandler这个request handler中完成,各个步骤的工作由SearchHandler中组合的组件来完成了(可自定义,在该查询的requesthandler配置元素内配置)。示例,自定义组件组合:
  
  <arr name="components">
  
  <str>query</str>
  
  <str>facet</str>
  
  <str>mlt</str>
  
  <str>highlight</str>
  
  <str>debug</str>
  
  <str>someothercomponent</str>
  
  </arr>
  
  "query" (usually QueryComponent)
  
  "facet" (usually FacetComponent)
  
  "mlt" (usually MoreLikeThisComponent)
  
  "highlight" (usually HighlightComponent)
  
  "stats" (usually StatsComponent)
  
  "debug" (usually DebugComponent)
  
  还可在主组件组合前、后加入组件:
  
  <arr name="first-components">
  
  <str>mycomponent</str>
  
  </arr>
  
  <arr name="last-components">
  
  <str>myothercomponent</str>
  
  </arr>
  
  详细了解: https://wiki.apache.org/solr/SearchHandler
  
  问:SearchHandler中配置的 default是做什么用的?
  
  默认参数设置,如果你有这样的默认查询参数需要,可这样配置。
  
  查询语法及解析器详解
  
  通用查询参数详解
  
  1.defType
  
  defType用来选择解析参数q指定的主查询串的查询解析器,如未给定默认使用solr的标准查询解析器(defType=lucene)。
  
  Solr中提供了三种解析器供选择:
  
  lucene: solr的Standard Query Parser 标准查询解析器
  
  dismax: DisMax Query Parser
  
  edismax: Extended DisMax Query Parser (eDismax)
  
  2.sort
  
  指定如何对搜索结果进行排序,asc 表示圣墟,desc 降序。Solr可根据如下部分对结果文档进行排序:
  
  文档相关性得分
  
  函数计算的结果
  
  设置了docValues="true"的基本数据类型字段(numerics, string, boolean, dates, etc.)
  
  存储了docValues的可排序分词索引字段(SortableTextFields)。
  
  单值不分词索引的字段。
  
  对于基本数据类型和SortableTextFields ,如果是多值的,排序规则:
  
  升序:取最小值参与排序;
  
  降序:取最大值进行排序;
  
  如要指定用什么值:则在传参时用sort=field(name,max) or sort=field(name,min) 方式传参。
  
  3.start
  
  分页查询的起始行号(从0开始),没传默认为0。
  
  4.rows
  
  查询返回多少行,默认10(可配置)。
  
  5.fq
  
  Filter Query 用来在主查询的结果上进行过滤,不影响相关性评分。Fq对于提速复杂的查询非常有用。因为fq指定的过滤查询结果是独立于主查询被缓存起来的。对于下次查询,如果用到了该过滤查询,则直接从缓存中取出结果进行对主查询的结果进行过滤即可。
  
  fq的传参说明:
  
  可以一次传传多个fq:
  
  fq=popularity:[10 TO *]&fq=section:0
  
  也可将多个过滤条件组合在一个fq:
  
  fq=+popularity:[10 TO *] +section:0
  
  说明:几个fq就缓存几个过滤结果集
  
  6.fl
  
  fl(field list),指定结果中返回哪些字段,指定的字段必须是 stored="true" or docValues="true" 的。多个字段用空格或英文逗号间隔。需要评分时通过 score 指定。如果传人的值为*,则stored="true" or docValues="true" and useDocValuesAsStored="true"的字段都会返回。
  
  7.debug
  
  debug参数用于指定在结果中返回调试信息。
  
  8.explainOther
  
  在一个查询中附带解释另一个查询的评分,在结果中返回它的得分解释。这可以让我们在topN查询时理解为什么某个文档没有返回。
  
  示例:
  
  q=supervillians&debugQuery=on&explainOther=id:juggernaut
  
  9.timeAllowed
  
  限定查询在多少毫秒内返回,如果到时间了还未执行完成,则直接返回部分结果。
  
  10.omitHeader
  
  true/false ,如设为true,在则响应体中忽略表示查询执行状态信息(如耗时)的头。
  
  11.wt
  
  指定响应的内容格式:json、xml、csv…… SearchHandler根据它选择ResponseWriter。
  
  12.cache
  
  设置是否对查询结果、过滤查询的结果进行缓存。默认是都会被缓存的。如果不需要缓存明确设置 cache=false。
  
  13.logParamsList
  
  solr默认会日志记录所有的请求参数,如果不需要记录所有,则通过此参数指定要记录的参数名,如:
  
  logParamsList=q,fq
  
  describe('Array', function() {
  
  before(function() {
  
  // ...
  
  });
  
  describe('#indexOf()', function() {
  
  context('when not present', function() {
  
  it('should not throw an error', function() {
  
  (function() {
  
  [1, 2, 3].indexOf(4);
  
  }.should.not.throw(www.baohuayule.net/));
  
  });
  
  it('should www.fengshen157.com/ return -1', function() {
  
  [1, 2, 3].indexOf(4).should.equal(www.jiahuayulpt.com -1);
  
  });
  
  });
  
  context('when present', function() {
  
  it('should return the index www.zhongyiyuL.cn where the element first appears in the array', function() {
  
  [1, 2, 3].indexOf(3).should.equal(2);
  
  });
  
  });
  
  });
  
  });
  
  TDD
  
  提供的接口有: suite(www.tiaotiaoylzc.com), test(www.yongshiyule178.com), suiteSetup(), suiteTeardown(), setup(), and teardown():
  
  suite('Array', function() {
  
  setup(function() {
  
  // ...
  
  });
  
  suite('#indexOf()', function() {
  
  test('should return -1 when not present', function() {
  
  assert.equal(-1, [1, 2, 3].indexOf(4));
  
  });
  
  });
  
  });
  
  QUNIT
  
  和TDD类似,使用suite()和test()标记测试永烈,包含的接口有:before(), after(), beforeEach(), and afterEach()。
  
  function ok(expr, msg) {
  
  if (!expr) throw new Error(msg);
  
  }
  
  suite('Array');
  
  test('#length', function() {
  
  var arr = [1, 2, 3];
  
  ok(arr.length == 3);
  
  });
  
  test('#indexOf()', function() {
  
  var arr = [1, 2, 3];
  
  ok(arr.indexOf(1) == 0);
  
  ok(arr.indexOf(2) == 1);
  
  ok(arr.indexOf(3) == 2);
  
  });
  
  suite('String'www.yongshi123.cn);
  
  test('#length', function() {
  
  ok('foo'.length =dasheng178.com= www.baohuayule.com 3);
  
  });
  
  如果都不记录:传入: logParamsList=
  
  14.echoParams
  
  指定在响应体的内容的头部中返回哪些查询参数,可选值:
  
  explicit: 默认,返回显示传入的参数+
  
  all: 应用到查询的所有参数.
  
  none:不返回.

搜索引擎(Solr-搜索详解)的更多相关文章

  1. Solr系列五:solr搜索详解(solr搜索流程介绍、查询语法及解析器详解)

    一.solr搜索流程介绍 1. 前面我们已经学习过Lucene搜索的流程,让我们再来回顾一下 流程说明: 首先获取用户输入的查询串,使用查询解析器QueryParser解析查询串生成查询对象Query ...

  2. Solr系列六:solr搜索详解优化查询结果(分面搜索、搜索结果高亮、查询建议、折叠展开结果、结果分组、其他搜索特性介绍)

    一.分面搜索 1. 什么是分面搜索? 分面搜索:在搜索结果的基础上进行按指定维度的统计,以展示搜索结果的另一面信息.类似于SQL语句的group by 分面搜索的示例: http://localhos ...

  3. Solr部署详解

    Solr部署详解 时间:2013-11-24 方式:转载 目录 1 solr概述 1.1 solr的简介 1.2 solr的特点 2 Solr安装 2.1 安装JDK 2.2 安装Tomcat 2.3 ...

  4. Elastic Stack 笔记(六)Elasticsearch5.6 搜索详解

    博客地址:http://www.moonxy.com 一.前言 Elasticsearch 主要包含索引过程和搜索过程. 索引过程:一条文档被索引到 Elasticsearch 之后,默认情况下 ES ...

  5. elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解

    一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状 ...

  6. Solr系列三:solr索引详解(Schema介绍、字段定义详解、Schema API 介绍)

    一.Schema介绍 1. Schema 是什么? Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段.字段的数据类型.字段该索引存储. 2. Schema 的定义方式 ...

  7. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  8. 搜索引擎(Elasticsearch搜索详解)

    学完本课题,你应达成如下目标: 掌握ES搜索API的规则.用法. 掌握各种查询用法 搜索API 搜索API 端点地址 GET /twitter/_search?q=user:kimchy GET /t ...

  9. Windows下安装solr步骤详解

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...

  10. Solr高亮详解

    hl.fl: 用空格或逗号隔开的字段列表.要启用某个字段的highlight功能,就得保证该字段在schema中是stored.如果该参数未被给出,那么就会高亮默认字段 standard handle ...

随机推荐

  1. [Jxoi2012]奇怪的道路 BZOJ3195 状压DP

    分析: k很小,可以状压. f[S][i]表示状态S表示在i之前k+1个中点的边数奇偶情况 之后转移的时候,S的最后一位不能为1 附上代码: #include <cstdio> #incl ...

  2. python_分布式进程中遇到的问题

    看文档学习分布式进程中遇到了一下问题,文档里面例题是python2.X,我用的python3.x,就出现了一下莫名奇妙的问题,最终版代码先呈上: taskManager.py # coding:utf ...

  3. 实测—fft IP核使用(包括ifft的配置使用)

    Vivado xilinx fft9.0 使用笔记: ****注 仿真实测1024点的转换需要经过1148个时钟周期才能得到转换结果: 模块配置信号含义请参考pg109文档手册(写的贼烂会看晕),不详 ...

  4. 20155238 2016-2017-2 《JAVA程序设计》第十周学习总结

    教材学习内容总结 # Java计算机网络基础 计算机网络 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使 ...

  5. Centos 定时任务发送smtp邮件

    接着上一篇文章...... 1.首先创建一个sheel的脚本命令,我是在home文件夹下面创建的命令: touch a.sh 2.编辑a.sh脚本 vim a.sh ,键入键盘   i  键 准备插入 ...

  6. libgdx学习记录12——圆角矩形CircleRect

    libgdx提供了ShapeRenderer这个工具,用它可以画点.画线.画圆.画矩形.画椭圆.画扇形,但是没有提供画圆角矩形的方法. 刚开始自己尝试分成8端,4端画直线,4端画扇形,发现多了半径几部 ...

  7. 老项目迁移到springboot之后,上线服务器出现404的解决方法

    原因是老项目迁移到springboot之后,已经不再使用web.xml的配置了,但是WEB-INF目录下还有web.xml,所以才导致的404,所以只需要在源码处删除整个WEB-INF重新build即 ...

  8. Android 实现 WheelView

    wheel view 目录(?)[-] Android WheelView效果图 网上的开源代码 实现思路 扩展Gallery 如何使用 我们都知道,在iOS里面有一种控件------滚筒控件(Whe ...

  9. AHD/TVI/CVI/CVBS/IP

    1.CVBS是最早的模拟摄像机,现在看来效果差. 2.AHD   TVI   CVI都是模拟摄像机的升级版,俗称同轴,三种名称只是用的方案系统不一样而已,相比模拟的效果清晰,和模拟的外观都是一样的bn ...

  10. FUNMVP:几张图看懂区块链技术到底是什么?(转载)

    几张图看懂区块链技术到底是什么? 本文转载自:http://www.cnblogs.com/behindman/p/8873191.html “区块链”的概念可以说是异常火爆,好像互联网金融峰会上没人 ...