利用SOLR搭建企业搜索平台 之六(solr查询参数说明)

合集下载

solr配置及数据库及文档解析

solr配置及数据库及文档解析

一、准备数据1.去官网下载最新的solr。

当前最新为4.5版本。

2.准备tomcat7.(下载tomcat7)二、配置solr。

1.将下载的solr4.5解压得到:2.将example\solr-webapp 下的solr.war 放到tomcat的webapp下。

3.启动tomcat 此时报错,solr.war 解压关闭tomcat 删除solr.war4.得到solr 项目5.配置solr_home :将下载的solr包中解压的example/solr 文件夹copy到d:/solr/solr_home(路径可以任意修改)。

6.打开tomcat下的webapp\solr\WEB-INF 下的web.xml,修改添加如下代码:<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>D:/solr/solr_home</env-entry-value><env-entry-type>ng.String</env-entry-type></env-entry>7.其中<env-entry-value> 中的值即为第5步中配置的路径。

8.copy 下载包中的example\lib\ext 下的jar包全部放到tomcat 的lib 目录下。

9设置solr/collection/conf/中的solrconfig.xml 中jar包路径,将路径该对就可以了。

10.将C:\app\solr-4.5.0\solr-4.5.0\example\resources下的log4j.properties拷贝到C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\solr\WEB-INF\classes下。

Solr 功能使用

Solr 功能使用

Solr 功能使用1. 准备阶段创建一个user schema,对其进行各种业务操作。

1.1. User元数据结构1.2. Solr schema设计●增加一个copyField text用于文本搜索1.3. 数据导入总共365051条记录,顺便感叹一下耗时,只花了5毫秒:2. 功能使用solr提供了多种语言的sdk,上面导入数据使用的是solrj,以下我就只用使用2.1. 基本查询http://172.16.5.2:8983/solr/user_shard2_replica1/select?q=*:*&wt=json&inden t=true&start=0&row=10&sort=followersCount+desc解释:●查询条件“*:*”,查询所有数据●格式化返回格式json:wt=json&indent=true●从0条开始,返回10条记录:start=0&row=10●按照用户粉丝量倒叙返回:sort=followersCount+desc,“+”号可使用空格代替更多的常用参数:●fq:对查询结果的二次筛选,且会把查询的结果缓存起来,下次同样的查询将直接命中缓存●fl:对返回的结果字段进行限制,例如我只想返回id更丰富的使用规范说明:https:///confluence/display/solr/Query+Syntax+and+Parsing 2.2. 权重查询DisMax以上面的schema为例,假设我需要查询所有“九江”的用户。

地区值是存放在location字段中的,也有可能用户只在location中只存放了“江西”,但是description中有可能存放了和九江相关的介绍,这样这个用户只能说有可能也是九江的,在查询是我希望确定是九江的用户排在前面。

这个时候就可以用到权重这个概念了。

上面的应用场景查询方式:http://172.16.5.2:8983/solr/user_shard2_replica1/select?q=text:%E4%B9%9D %E6%B1%9F&start=0&rows=10&wt=json&indent=true&defType=dismax&qf=l ocation^10+description^3权重查询常用参数:●defType=dismax,属于基本查询的参数,权重查询时必须是dismax●qf:权重设置,例如location^10就是location字段的权重设置,值得大小我理解是相对的,默认不设置的为1●mm:当查询条件(指的是参数个数,而非表达式个数)为多个时,设置返回最少匹配的次数另外还有很多参数,我还没有理解设计意图。

利用搜索引擎搭建企业搜索平台

利用搜索引擎搭建企业搜索平台

利用搜索引擎搭建企业搜索平台搜索引擎是当前互联网应用中的主要工具,通过使用搜索引擎,使得我们检索信息的能力获得了极大的提高。

如何将搜索引擎技术引入到企业中应用,本文从搜索引擎的工作原理出发,利用基于Lucene的搜索引擎服务器Solr搭建企业自己的搜索平台。

标签:企业信息化搜索引擎信息检索lucene solr一、前言1.目的和意义搜索引擎是当前互联网应用中的主要工具,通过使用搜索引擎,使得我们检索信息的能力获得了极大的提高,我们较常使用的百度和Google就是搜索引擎应用最成功典范。

随着企业数据中心的建立,越来越多的数据不断的汇聚,企业将面对海量数据,如何把搜索引擎技术引入到企业中应用,并利用其为企业搭建自己的搜索平台,为企业从海量数据中进行快速、准确、有效的搜索提供支持。

2.研究的内容本文主要研究内容是Lucene搜索引擎实现原理,并利用基于Lucene的搜索引擎服务器Solr搭建企业自己的搜索平台。

二、搜索引擎原理1.搜索引擎介绍搜索引擎是一种搜索工具,目的在于帮助用户找到想要查询的信息和数据。

搜索引擎没有具体的分类,大致分为全文搜索引擎、分类目录搜索引擎、元搜索引擎等。

企业中要使用搜索引擎技术,可以选择成熟的开源项目,目前开源的全文搜索引擎有Sphinx、Nutch、Solr等等。

2.搜索引擎工作原理不同的搜索引擎实现会有一些差异,但是基本的实现原理是类似的。

搜索引擎工作原理总体分两个过程,索引(Indexing)和搜索(Search)。

索引:是所有搜索引擎的核心概念,为了进行快速查找,把数据处理成一种高效、可交叉引用的格式。

索引过程是将各种数据提取成搜索引擎能识别的信息交给索引器,索引器会分析数据并在索引库中创建该信息的索引。

搜索:就是在索引中查找关键字的过程,目的是找到这些关键字在哪些地方出现过,搜索的质量通常由查确率(precise)和查全率(recall)来衡量,查全率衡量查找到相关内容的能力,查确率用来衡量过滤非相关内容能力。

全文检索引擎Solr系列——Solr核心概念、配置文件

全文检索引擎Solr系列——Solr核心概念、配置文件

全⽂检索引擎Solr系列——Solr核⼼概念、配置⽂件DocumentDocument是Solr索引(动词,indexing)和搜索的最基本单元,它类似于关系数据库表中的⼀条记录,可以包含⼀个或多个字段(Field),每个字段包含⼀个name和⽂本值。

字段在被索引的同时可以存储在索引中,搜索时就能返回该字段的值,通常⽂档都应该包含⼀个能唯⼀表⽰该⽂档的id字段。

例如:1 2 3 4 5 6 7 8<doc><field name="id">company123</field><field name="companycity">Atlanta</field><field name="companystate">Georgia</field><field name="companyname">Code Monkeys R Us, LLC</field> <field name="companydescription">we write lots of code</field> <field name="lastmodified">2013-06-01T15:26:37Z</field></doc>SchemaSolr中的Schema类似于关系数据库中的表结构,它以schema.xml的⽂本形式存在在conf⽬录下,在添加⽂当到索引中时需要指定Schema,Schema⽂件主要包含三部分:字段(Field)、字段类型(FieldType)、唯⼀键(uniqueKey)字段类型(FieldType):⽤来定义添加到索引中的xml⽂件字段(Field)中的类型,如:int,String,date,字段(Field):添加到索引⽂件中时的字段名称唯⼀键(uniqueKey):uniqueKey是⽤来标识⽂档唯⼀性的⼀个字段(Feild),在更新和删除时⽤到例如:12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23<schema name="example"version="1.5"><field name="id"type="string"indexed="true"stored="true"required="true"multiValued="false"/><field name="title"type="text_general"indexed="true"stored="true"multiValued="true"/><uniqueKey>id</uniqueKey><fieldType name="string"class="solr.StrField"sortMissingLast="true"/><fieldType name="text_general"class="solr.TextField"positionIncrementGap="100"><analyzer type="index"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.StopFilterFactory"ignoreCase="true"words="stopwords.txt"/><!-- in this example, we will only use synonyms at query time<filter class="solr.SynonymFilterFactory"synonyms="index_synonyms.txt"ignoreCase="true"expand="false"/> --><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.StopFilterFactory"ignoreCase="true"words="stopwords.txt"/><filter class="solr.SynonymFilterFactory"synonyms="synonyms.txt"ignoreCase="true"expand="true"/><filter class="solr.LowerCaseFilterFactory"/></analyzer></fieldType></schema>Field在Solr中,字段(Field)是构成Document的基本单元。

solr使用手册

solr使用手册

Solr全文检索服务一、企业站内搜索技术选型⏹在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。

1.使用Lucene实现?什么是Lucene ?⏹Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。

Lucene目前是Apache Jakarta(雅加达) 家族中的一个开源项目。

也是目前最为流行的基于Java开源全文检索工具包。

目前已经有很多应用程序的搜索功能是基于Lucene ,比如Eclipse 帮助系统的搜索功能。

Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索●单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。

2.使用Google或Baidu接口?●通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依赖紧密,不方便扩展,不建议采用。

3.使用Solr实现? Solr是什么?⏹Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。

Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

⏹Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。

Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr返回Xml、json等格式的查询结果进行解析,组织页面布局。

Solr使用手册

Solr使用手册

Solr部署及开发一、部署1 环境要求JDK 1.6及以上版本,Tomcat 6及以上,Solr发布版本4.X。

如果使用较低版本,请查看Solr版本支持的JDK版本。

2安装步骤首先安装JDK 1.7和Tomcat 7,配置好环境变量,并下载最新版Solr,目前版本为4.6.0。

如有必要可手动修改Tomcat端口号。

为了支持中文,需要修改tomcat中conf目录下的server.xml文件,在connector 节点中添加字符编码属性URIEncoding,如下:<Connector port="8086" protocol="HTTP/1.1"connectionTimeout="20000" URIEncoding="UTF-8"redirectPort="8443" />◆运行在jetty服务器Solr可以运行在自带的jetty服务器,可按如下步骤运行起来:1、解压solr-4.6.0.zip到你想到存放的路径,比如:d:/solr2、cmd打开命令行窗口,进入d:/solr/example目录3、执行命令:java -jar start.jar4、通过第三步以后,系统会启动solr自带的jetty服务器,通过http://localhost:8983/solr/便可访问solr。

此时,solr已成功启动。

◆运行在Tomcat服务器1、solr.4.6.0.zip解压到指定的目录中,如d:/solr-4.6.0。

2、将d:/solr-4.6.0/example/webapps下的solr.war拷贝到tomcat–>weapps中。

3、新建文件夹d:/sorl_home,将d:/solr-4.6.0/example/solr目录拷贝至d:/sorl_home中,如果要配置为多核应用,可以将solr-4.6.0\example下的multicore拷贝到d:/sorl_home中,这样就会有就会有core0和core1两个应用。

Solr系列六:solr搜索详解优化查询结果(分面搜索、搜索结果高亮、查询建议、折叠展开结。。。

Solr系列六:solr搜索详解优化查询结果(分⾯搜索、搜索结果⾼亮、查询建议、折叠展开结。

⼀、分⾯搜索1. 什么是分⾯搜索?分⾯搜索:在搜索结果的基础上进⾏按指定维度的统计,以展⽰搜索结果的另⼀⾯信息。

类似于SQL语句的group by分⾯搜索的⽰例:2. Solr中⽀持的分⾯查询字段分⾯、区间分⾯、决策树分⾯、查询分⾯2.1 字段分⾯执⾏搜索时,根据查询请求返回特定分⾯字段中找到的唯⼀值以及找到的⽂档数。

通⽤查询参数:facet:true/false 对当前搜索是否启⽤分⾯facet.query:指定⼀个额外的分⾯查询语句字段分⾯查询参数:facet.field:指定对哪个字段进⾏分⾯计算。

该参数可以多次指定以返回多个字段⽅⾯。

字段需是索引字段。

facet.sort:分⾯结果的排序⽅式:count:根据统计数量排,index:索引的词典顺序facet.limit:确定每个分⾯返回多少个唯⼀分⾯值。

可取值:整数>=-1,-1表⽰不限制,默认100。

facet.offset:对分⾯值进⾏分页,指定页偏移。

>=0 默认0。

facet.prefix:指定限制字段分⾯值必须以xxx开头,⽤以筛选分⾯值。

facet.missing:true/false,是否在分⾯字段中返回所有不包含值(值为缺失)的⽂档计数。

facet.mincount:指定分⾯结果中的分⾯值的统计数量>=mincount的才返回⽰例:sort、limit、offset、prefix、missing、mincount 可根据字段指定: f.filedname.facet.sort=count2.2 区间分⾯区间分⾯将数值或时间字段值分成⼀些区间段,按区间段进⾏统计。

区间分⾯查询参数:facet.range:指定对哪个字段计算区间分⾯。

可多次⽤该参数指定多个字段。

facet.range=price&facet.range=agefacet.range.start:起始值f.price.facet.range.start=0.0&f.age.facet.range.start=10stModified_dt.facet.range.start=NOW/DAY-30DAYSfacet.range.end:结束值f.price.facet.range.end=1000.0&f.age.facet.range.start=99stModified_dt.facet.range.end=NOW/DAY+30DAYSfacet.range.gap:间隔值,创建⼦区间。

搜索引擎solr环境配置、分词及索引操作

一、配置solr环境1、下载solr /dyn/closer.cgi/lucene/solr/此处用的是3.5 解压到D盘D:/solr/apache-solr-3.5.02、修改tomcat conf/server.xml<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />添加编码的配置URIEncoding="UTF-8" (如不添加,中文检索时因为乱码搜索不到)3、配置solrTomcat conf/Catalina/localhost下添加solr.xml内容:<Context docBase="D:/solr/apache-solr-3.5.0/dist/apache-solr-3.5.0.war" debug="0"crossContext="true" ><Environment name="solr/home" type="ng.String"value="D:/solr/apache-solr-3.5.0/example/solr" override="true" /></Context>二、中文分词配置1、下载分词器:/p/mmseg4j/2、下载词库:/p/mmseg4j/downloads/detail?name=data.zip&can=2&q3、将解压后的mmseg4j-1.8.5目录下的mmseg4j-all-1.8.5.jar拷贝到Tomcat的webapps/solr/WEB-INF/lib目录下。

Solr搜索文档说明

Solr使用教程目录一、软件版本 (2)二、安装教程 (2)1、Solr安装教程 (2)2、solr环境搭建 (4)3、业务字段的实际配置 (7)4、dataimport 导入数据库数据 (8)5、solrj的使用 (10)6、电商平台的应用 (14)一、软件版本Solr版本号:solr-5.5.5jdk版本号:jdk1.8以上Tomcat版本号:Tomcat8.0以上二、安装教程1、Solr安装教程1.创建solrhome以及solrcore(mysolrhome、mycore 名字可以任意指定)1.1在指定的目录下新建文件夹solrhome如:D:\mysolrhome1.2将solr-5.5.4\server\solr\solr.xml拷贝至D:\mysolrhome1.3在solrhome下新建文件夹solrcore如D:\mysolrhome\mycore1.4将solr-5.5.4\server\solr\configsets\basic_configs\conf完整目录拷贝至D:\mysolrhome\mycore\下2.部署到Tomcat2.1将solr-5.5.4\server\solr-webapp\webapp 完整目录复制到Apache Tomcat 8.0.27\webapps下并重命名为solr2.2在Apache Tomcat 8.0.27\webapps\solr\WEB-INF下新建classes文件夹2.3将solr-5.5.4/server/resource/log4j.properties 拷贝至上一步创建的classes2.4把solr-5.5.4/server/lib/ext/目录下的所有jar文件复制到Apache Tomcat 8.0.27/webapp/solr/WEB-INF/lib/中3.配置solrcore3.1修改Apache Tomcat 8.0.27-solr\webapps\solr\WEB-INF\web.xml 新增<env-entry>标签,将你的solrhome配置进去。

solr查询语句

solr查询语句Solr作为企业级搜索引擎,广泛应用于各行各业的信息搜索和数据分析。

而Solr的查询语句是使用Solr进行搜索的核心。

本文将围绕“Solr查询语句”展开,分步骤阐述Solr查询语句的使用方法。

第一步:Solr基本查询语句Solr的基本查询语句是使用关键词q来定义的。

例如,要在title字段中搜索“Solr”,则可以使用以下查询语句:q=title:Solr其中,q表示查询参数,title表示搜索字段,Solr表示搜索的关键词。

此外,Solr的查询语句还可以包含多个搜索条件和逻辑关系。

例如,要查询title字段中包含“Solr”且content字段中包含“搜索引擎”的文档,可以使用以下查询语句:q=title:Solr AND content:搜索引擎其中,AND表示逻辑关系,连接两个查询条件。

第二步:Solr高级查询语句除了基本查询语句外,Solr还提供了一些高级查询语句,可以实现更灵活的搜索方式。

1.模糊搜索模糊搜索是一种模糊匹配的搜索方式,可以通过“~”来实现。

例如,要搜索包含“Solr”或“Solor”的文档,可以使用以下查询语句:q=title:Solr~0.5其中,0.5表示匹配的相似度,越小表示匹配的范围越广。

2.通配符搜索通配符搜索可以使用通配符“?”和“*”进行模糊匹配。

例如,要搜索title字段中以“Sol”开头的文档,可以使用以下查询语句:q=title:Sol*其中,“*”表示匹配任意字符,可以匹配0个或多个字符。

3.boost查询boost查询是一种可以为查询结果打分的查询方式。

例如,对于以下查询语句:q=title:Solr OR content:搜索引擎 AND boost(title:Solr^2)其中,^2表示为title:Solr设置权重为2,搜索结果中包含title字段中的“Solr”更加重要。

第三步:Solr查询语句的优化为了使搜索更加高效和准确,需要对Solr查询语句进行优化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用SOLR搭建企业搜索平台之六(solr查询参数说明)
在做solr查询的时候,solr提供了很多参数来扩展它自身的强大功能!以下是使用频率最高的一些参数!
具体请看:
1.常用
q - 查询字符串,必须的。

查询语句(类似SQL) 相关详细的操作还需lucene 的query 语法
fl - 指定返回那些字段内容,用逗号或空格分隔多个。

start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。

rows - 指定返回结果最多有多少条记录,配合start来实现分页。

sort - 排序,格式:sort=<field name>+<desc|asc>[,<field
name>+<desc|asc>]… 。

示例:(score desc, price asc)表示先“score” 降序, 再“price” 升序,默认是相关性降序。

wt - (writer type)指定输出格式,可以有 xml, json, php, phps, 后面solr 1.3增加的,要用通知我们,因为默认没有打开。

fl表示索引显示那些field(*表示所有field, score 是solr 的一个匹配热度)
q.op 表示q 中查询语句的各条件的逻辑操作 AND(与) OR(或)
hl 是否高亮
hl.fl 高亮field
hl.snippets 不太清楚(反正是设置高亮3就可以了)
hl.simple.pre 高亮前面的格式
hl.simple.post 高亮后面的格式
facet 是否启动统计
facet.field 统计field
fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq 查询符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。

官方文档:
/solr/CommonQueryParameters#head-6522ef80f22d0e 50d2f12ec487758577506d6002
2.不常用
q.op - 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定
df - 默认的查询字段,一般默认指定
qt - (query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。

3.其它
indent - 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。

version - 查询语法的版本,建议不使用它,由服务器指定默认值。

相关文档
最新文档