当前位置:文档之家› 利用SOLR搭建企业搜索平台

利用SOLR搭建企业搜索平台

利用SOLR搭建企业搜索平台

目录

利用SOLR搭建企业搜索平台 (1)

运行solr (2)

中文分词 (3)

配置文件 (6)

MultiCore (8)

solrj (10)

solr查询参数说明 (15)

solr使用问题集 (16)

solr 实现去掉重复的搜索结果 (19)

solr的查询语法 (24)

数据库数据导入到solr (27)

中文分词之IK (30)

运行solr

在网络上找了很多的关于solr的资料,发现非常的不全面,即使就是官方的wiki,也是如此!

基于现阶段正在研究的solr应用,陆续的会分享我的一些经验!

今天要说的是:怎么跑起来!

1》首先下载好solr,我用的是 solr1.3,下载地址:

windows版本

https://www.doczj.com/doc/5a10181423.html,/apache-mirror/lucene/solr/1.3.0/apache-solr-1.3.0.zip

linux版本

https://www.doczj.com/doc/5a10181423.html,/apache-mirror/lucene/solr/1.3.0/apache-solr-1.3.0.tgz

2》准备运行容器,我用的是tomcat6.0.20.如果是玩的话,也可以不用准备专门的容易,你只需解压好solr的下载包,找到 example文件夹,然后运行 start.jar。具体指令:java -jar start.jar做应用的时候,不建议采用该方式。该方式内部包含了jetty!

3》有关tomcat的使用,不是本文的重点,如果你有问题,请参见tomcat的使用。解压好tomcat,将solr包下面的dist文件夹中的apache-solr-1.3.0.war 拷贝到 tomcat的webapps,并且改名为

solr.war。

4》新建一个 solr-tomcat文件夹,我是把这个文件夹建立在C盘根目录,你可以采用同样方式,也可以不这样,放哪由你决定。建立好该文件夹以后,在把它下面在建立一个solr文件夹,把solr包里面的examplesolr文件夹下面的所有文件放入到 solr里面。

5》最后一步配置 solr.home,可以有三种方式。

1)基于当前路径的方式

这种情况需要在c:solr-tomcat目录下去启动tomcat,Solr查找./solr,因此在启动时候需要切换到c:solr-tomcat

2)基于环境变量

windows在环境变量中建立solr.home,值为c:solr-tomcat

linux在当前用户的环境变量中(.bash_profile)或在catalina.sh中添加如下环境变量

export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr-tomcat/solr"

3)基于JNDI

在tomcat的conf文件夹建立Catalina文件夹,然后在Catalina文件夹中在建立localhost文件夹,在该文件夹下面建立solr.xml,其中内容:

Xml代码

问题描述:

个人发现的一个问题,就是如果配置好JNDI的话,然后在tomcat的bin文件夹下面启动 tomcat的话,会在tomcat的bin下面建立solr文件夹,这个文件夹中主要存放的索引文件。本来这些东西应该放入c:solr-tomcatsolr。如果你不想出现这种情况的话,请使用基于当前路径的方式。

6》打开浏览器,请看看能否访问该服务。如果能够访问,恭喜您跑起来了。

中文分词

这篇文章,主要说的是怎么在solr中加入中文分词,参考了一些文章,但是还是花了不少时间才搞出的。可能是大侠们太牛了,所以很多细节东西都没有写出来!但是要指出的是很多文章都是抄来抄去的!

入正题:

在上面的一个文章中,已经使solr跑起来了,在上面的基础上,加入中文分词。我用的是paoding分词器!

1》请下好paoding分词器,下载地址:

https://www.doczj.com/doc/5a10181423.html,/p/paoding/downloads/list,在这里要非常感谢paoding作者:qieqie

在使用paoding的时候要注意:paoding的dic位置,也就是字典的位置,有两种办法解决:

1)在系统环境变量中加入PAODING_DIC_HOME这个变量,值为paoding压缩包下面的dic的解压位置。

2)paoding-analysis.jar里面有个paoding-dic-home.properties文件,指定dic也可,但是要重新编译这个jar包,我采用的后面一种办法,只要每次固定好dic位置,部署还不是很不方便,设置环境变量我比较反感

2》建立文件

Java代码

双击代码全选

将该文件打包,如果你不愿打包,请到附件里面下吧。

请将两个jar,一个是这个,还有一个是 paoding-analysis.jar 放到tomcat的

webappssolrWEB-INFlib下

3》更改schema.xml文件,使分词器起到作用。如果你看过前面一个文章,schema.xml的具体位置在c:solr-tomcatsolrconf下面。

更改内容为:

Xml代码

双击代码全选

里面的为需要更改的内容

4》重启你的tomcat ,ok!

[Solr分词顺序]

Solr建立索引和对关键词进行查询都得对字串进行分词,在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。分词的顺序如下:

索引

1:空格whitespaceTokenize

2:过滤词StopFilter

3:拆字WordDelimiterFilter

4:小写过滤LowerCaseFilter

5:英文相近词EnglishPorterFilter

6:去除重复词RemoveDuplicatesTokenFilter

查询

1:查询相近词

2:过滤词

3:拆字

4:小写过滤

5:英文相近词

6:去除重复词

以上是针对英文,中文的除了空格,其他都类似

下篇文章可能会讲一下solr的配置

配置文件

运行solr是个很简单的事,如何让solr高效运行你的项目,这个就不容易了。要考虑的因素太多。这里很重要一个就是对solr的配置要了解。懂得配置文件每个配置项的含义,这样操作起来就会如鱼得水!

在solr里面主要的就是solr的主目录下面的schema.xml,solrConfig.xml,如果你看过前两篇文章的话,你应该知道solr的主目录处于什么位置(c:solr-tomcatsolrconf)。

在这个文章中,我们首先来说说这个schema.xml。

schema.xml ,这个相当于数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括types 、

fields 和其他的一些缺省设置。

1》首先需要在types 结点内定义一个FieldType 子结点,包括name,class,positionIncrementGap 等

等一些参数,name 就是这个FieldType 的名称,class 指向org.apache.solr.analysis 包里面对应的class

名称,用来定义这个类型的行为。在FieldType 定义的时候最重要的就是定义这个类型的数据在建立索引

和进行查询的时候要使用的分析器analyzer,包括分词和过滤。在例子中text 这个FieldType 在定义的时

候,在index 的analyzer 中使用 solr.WhitespaceTokenizerFactory 这个分词包,就是空格分词,然后

使用 solr.StopFilterFactory ,solr.WordDelimiterFilterFactory ,solr.LowerCaseFilterFactory ,

solr.EnglishPorterFilterFactory ,solr.RemoveDuplicatesTokenFilterFactory 这几个过滤器。在向索

引库中添加text 类型的索引的时候,Solr 会首先用空格进行分词,然后把分词结果依次使用指定的过滤

器进行过滤,最后剩下的结果才会加入到索引库中以备查询。Solr 的analysis 包并没有带支持中文的包,

在第二篇文章中详细讲了怎样添加paoding 中文分词器,详情请参见

https://www.doczj.com/doc/5a10181423.html,/blog/424474

2》接下来的工作就是在fields 结点内定义具体的字段(类似数据库中的字段),就是filed ,filed

定义包括name,type (为之前定义过的各种FieldType ),indexed (是否被索引),stored

(是否被储存),

multiValued (是否有多个值)等等。

例:

Xml 代码

双击代码全选

field 的定义相当重要,有几个技巧需注意一下,对可能存在多值得字段尽量设置multiValued 属性

为true ,避免建索引是抛出错误;如果不需要存储相应字段值,尽量将stored 属性设为false 。

3》建议建立了一个拷贝字段,将所有的全文字段复制到一个字段中,以便进行统一的检索:

Xml 代码

双击代码全选

并在拷贝字段结点处完成拷贝设置:

Xml 代码

双击代码全选

4》除此之外,还可以定义动态字段,所谓动态字段就是不用指定具体的名称,只要定义字段名称的规则,例如定义一个 dynamicField,name 为*_i,定义它的type为text,那么在使用这个字段的时候,任何以_i结尾的字段都被认为是符合这个定义的,例如:name_i,gender_i,school_i等。

MultiCore

Solr Multicore 是 solr 1.3 的新特性。其目的一个solr实例,可以有多个搜索应用。

下面着手来将solr给出的一个example跑出来,在《利用SOLR搭建企业搜索平台之一(运行solr)》这篇文章里面已经讲了怎样来运行solr,这篇文章是基于《利用SOLR搭建企业搜索平台之一(运行solr)》,有不明白的请参见https://www.doczj.com/doc/5a10181423.html,/blog/424383

1》找到solr下载包中的example文件夹,在它的下面有个multicore文件夹,将这个文件夹下面的所有东西copy到 c:solr-tomcatsolr下面。

注意:有一个 solr.xml(这只是默认文件,当然也可以指定别的文件),如:

Xml代码

双击代码全选

这个文件是告诉solr应该加载哪些core,cores里有 core0,core1。core0(可以类比以前的solr.home)/conf目录下有schema.xml与solrconfig.xml,可以把实际应用的复制过来。现示例就用官方的了。

2》启动tomcat,访问应用,就可以看到有 Admin core0 和 Admin core1

3》采用上面的默认solr.xml,索引文件将存放在同一个目录下面,在这里将存放在

C:solr-tomcatsolrdata,如果你想更改目录,或者两个应用存放在不同的目录,请参见下面的xml。

Xml代码

双击代码全选

给core添加子元素 property,property的两个属性就不说了,一看就能明白!

https://www.doczj.com/doc/5a10181423.html, -- The core's name as defined in solr.xml

solr.core.instanceDir -- The core's instance directory (i.e. the directory under which that core's conf/ and data/ directory are located)

solr.core.dataDir -- The core's data directory (i.e. the directory under which that core's index directory are located)

solr.core.configName -- The name of the core's config file (solrconfig.xml by default)

solr.core.schemaName -- The name of the core's schema file (schema.xml by default)

4》solr.xml具体含义:

1)solr

The tag accepts two attributes:

persistent - By default, should runtime core manipulation be saved in solr.xml so that it is available after a restart.

sharedLib - Path to a directory containing .jar files that are added to the classpath of every core. The path is relative to solr.home (where solr.xml sits)

2)cores

The tag accepts two attribute:

adminPath - Relative path to access the CoreAdminHandler for dynamic core manipulation. For example, adminPath="/admin/cores" configures access via

http://localhost:8983/solr/admin/cores. If this attribute is not specified, dynamic manipulation is unavailable.

3)core

The tag accepts two attributes:

name - The registered core name. This will be how the core is accessed.

instanceDir - The solr.home directory for a given core.

dataDir - The data directory for a given core. The default is /data . It can take an absolute path or a relative path w.r.t instanceDir . Solr1.4

4)property

The tag accepts two attributes:

name - The name of the property

value - The value of the property

由于E文过于简单,所以就不翻译了!

solrj

相信很多人,在准备提交数据让solr建立索引的那刻,很纳闷,尽管看了不少网上的一些文章,但是我想依然还是有不少不理解的地方。

比如提交一个xml,采用post方式,尽管有些文章说了可以采用httpclient。但是我那个时候,还不是很理解,当然现在看来其实也没有什么了。但是对于一个刚入门solr的初学者,我想讲讲关于solr1.3的 solrj( sorlr J 目前使用二进制的格式作为默认的格式。对于solr1.2的用户通过显示的设置才能使用XML格式。)!

先上一个例子:

Java代码

双击代码全选

上面这段代码的意思是:利用for 提交10000个document ,并打印提交10000所需的时间。

1》CommonsHttpSolrServer 使用HTTPClient 和solr 服务器进行通信。

2》CommonsHttpSorlrServer 允许设置链接属性。

Java 代码

双击代码全选

3》实现SolrServer 接口的另一个类:EmbeddedSorrServer ,它不需要http 连接。

4》在构造document 的时候,可以一个一个添加到solrServer ,也可以构建一个包含document 的

Collection ,将Collection

添加到solrServer ,然后commit 。

5》也可以构造一个跟document 匹配的JavaBean 进行提交

使用 java 注释创建java bean 。@Field ,可以被用在域上,或者是setter 方法上。如果一个域的

名称跟bean 的名称是不一样的,那么在java 注释中填写别名,具体的,可以参照下面的域categories Java 代码

双击代码全选

java 注释也可以使用在

setter 方法上,如下面的例子:

Java 代码

双击代码全选

这里应该要有一个相对的,

get 方法(没有加java 注释的)来读取属性

Java 代码

双击代码全选

添加给solr

Java 代码

双击代码全选

将多个bean 提交给solr

Java 代码

双击代码全选

注意: 你可以重复使用SolrServer ,这样可以提高性能。

6》

Java 代码

双击代码全选

提交一个document,采用更新方式,注意:

Java代码

双击代码全选

7》

Java代码

双击代码全选

这是一个查询方法。关键字:“编程”。关于查询的关键字,请参见slor

wiki https://www.doczj.com/doc/5a10181423.html,/solr/QueryParametersIndex,或等待我的博客更新,在后面会有篇文章详细讲这个问题!

8》给solr的索引文件手动进行优化,

双击代码全选

9》solrJ 提供了一组API,来帮助我们创建查询,下面是一个faceted query的例子。

所有的 setter/add 方法都是返回它自己本身的实例,所以就像你所看到的一样,上面的用法是链式的。

solr查询参数说明

在做solr查询的时候,solr提供了很多参数来扩展它自身的强大功能!以下是使用频率最高的一些参数!

具体请看:

1.常用

q - 查询字符串,必须的。查询语句(类似SQL) 相关详细的操作还需lucene 的query 语法

fl - 指定返回那些字段内容,用逗号或空格分隔多个。

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

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

sort - 排序,格式:sort=+[,+]…。示例:(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之间的。官方文档:

https://www.doczj.com/doc/5a10181423.html,/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758577506d6 002

2.不常用

q.op - 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定

df - 默认的查询字段,一般默认指定

qt - (query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。

3.其它

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

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

solr使用问题集

某日,突发奇想,想写这么一个博客,希望记录下所有在solr中使用的毛病。而且我希望广大的看友们也能一起来说说你们平时遇到的各种错误,这样大家才能一起更好的进步!

话不多说,进入正题

1》solr 做索引时报 Lock obtain timed out: SingleInstanceLock: write.lock

有个频繁做索引的应用,它同时也对外提供搜索服务。大部分是 solr 1.3 的默认配置。solr 做索引,有时候报:

Xml代码

双击代码全选

是写锁取不到。但重启 solr 又可以正常做,主要是运行时间长了就报这个错了。还是看下配置吧。

看到 solr 1.3 默认的配置是:

Xml代码

双击代码全选

默认锁是 single ,只读的。solr 1.2 是 simple,把它改回去了,运行了几天,没事。

2》lucene & solr optimize 索引后结果与平台有点关系

昨日做索引的程序重构下,测试 optimize 索引(在原有数据基础上提交索引)时,在开发的机器(windows)里总是会有两段索引,要再 optimize 才只是一个索引段,当然不是设置 maxSegments=2。反复运行还是如此,为了说明是否写的程序有问题,就用 solr 自带的 post.sh (或 post.jar)提交optimize。结果还是有两段,再提交一次optimize 才是一个段。这问题……

旧的程序运行得很正常,看了下它也没有提交两次优化。然后把新的程序也放到服务器(linux)上运行,结果是只有一个段。

恩,可以认为是与文件系统有关,optimize 的时候是先新生成一段,然后再删除旧的索引,windows 可能是这样在运行期间与文件关联着删除不了旧的。linux 可能是不用(不打开)文件就可以删除。现只能这样简单解释。

3》换 solr 里的 lucene 包

solr 1.3 发布的时候,lucene 2.4还没有正式发布,其的 lucene 是开发版,现在lucene 2.4早已发布,那就换上新的 lucene 吧。

下载 solr

1.3https://www.doczj.com/doc/5a10181423.html,/apache-mirror/lucene/solr/1.3.0/apache-solr-1.3.0.zip和 lucene

2.4https://www.doczj.com/doc/5a10181423.html,/apache-mirror/lucene/java/lucene-2.4.0.zip到目录如e:/search/,

把 e:/search/apache-solr-1.3/lib 目录下的 lucene 相关的*.jar删除:

lucene-analyzers-2.4-dev.jar

lucene-core-2.4-dev.jar

lucene-highlighter-2.4-dev.jar

lucene-memory-2.4-dev.jar

lucene-queries-2.4-dev.jar

lucene-snowball-2.4-dev.jar

lucene-spellchecker-2.4-dev.jar

从 e:/search/lucene-2.4/(或contrib/)目录下找到对应的放到solr-1.3/lib下

然后构建 solr,到e:/search/apache-solr-1.3目录,ant dist-war

4》solr q查询容错性

当solr接收没q参数(或q参数值为空)请求时,会报错。报错十分讨厌,对开发调试时才比较有用,但实际运行环境报错就不太好了,java异常可能有点性能消耗,那干脆就返回正常的结果好了(只是结果里没有找到的数据)。

solr 1.3 可以写个组件去做。判断到空的时候,加一个q参数,其值为在索引里没有的数据。这样就可以返回没有数据的结果。

其实这样实现还是比较麻烦。可以在 solrconfig.xml的requestHandler里加一个默认参数。如

q=abcdefghijk。配置如下:

Xml代码

双击代码全选

这样的话查询容错性比较好,查询请求没有带q参数也可,q参数值为空也可。tomcat不会报错,还

可以返回结果。

solr 实现去掉重复的搜索结果

引用

Bory.Chan https://www.doczj.com/doc/5a10181423.html,/2009/04/apply-solr-collapsing-patch-remove-duplicate-result. html

打上SOLR-236_collapsing.patch补丁,实现 solr 搜索结果折叠、除去重复的搜索结果,可以实现

类似google搜索结果的“站内的其它相关信息”。solr collapsing patch 是用 hash 某个字段来实现

折叠重复结果的。下面我演示下应用这个补丁并搜索试用下。

其实 solr 上已经有了这功能的实现:solr 1.3 collapse patch,请看:

https://https://www.doczj.com/doc/5a10181423.html,/jira/browse/SOLR-236,我这里下载是了新的:

https://https://www.doczj.com/doc/5a10181423.html,/jira/secure/attachment/12403590/SOLR-236_collapsing.patch。

下载好后就需要打上补丁了,先准备一份源码在D:/apache-solr-1.3.0目录下。没有可以去下载:http: //https://www.doczj.com/doc/5a10181423.html,/dist/lucene/solr/1.3.0/apache-solr-1.3.0.zip。把SOLR-

236_collapsing.patch文件放在D:/apache-solr-1.3.0目录下,打补丁有我知道的有两种:用linux工具 patch(windows 下有 cygwin);用 ant 的 patch。

windows cygwin 的 patch:

Html代码

双击代码全选

ant patch,把下面的内容保存为 patch-build.xml 放到 D:apache-solr-1.3.0 目录下:

Xml代码

双击代码全选

ant 打补丁:

Html代码

双击代码全选

源码打上了补丁,然后用 ant 构建源码:

D:apache-solr-1.3.0>ant dist

在 D:/apache-solr-1.3.0/dist 目录下可以找到编译好的 solr 了。然后把 solr 放到 tomcat 中去运行它,把下面的内容保存在 TOMCAT_HOME/conf/Catalina/localhost/solr.xml 文件中:

Xml代码

双击代码全选

solr技术方案

Solr技术方案 一用户需求 以前的互动平台只能对固定表的固定字段做like这样的数据库层面的索引,性能低下,用户体验很差,很难满足业务提出的简化搜索的需求。 需求原型: 业界通用的做全站搜索的基本上两种: 1 选择googleAPI,百度API做。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,而且全站的SEO做的也不是很好,对于动态的很多ajax请求需要做快照,所以暂时不采用。 2 选择现有成熟的框架。

这里我们选择使用solr。 Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON 格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他Lucene 应用程序中的索引。此外,很多Lucene 工具(如Nutch、Luke)也可以使用Solr 创建的索引。 这里我们主要需要以下几种功能: 1 可用性及成熟性。 2 中文分词。 3 词库与同义词的管理(比如我们使用最高的:股票代码)。 4 高亮显示。 5 方便的导入数据。 6 Facet的轻松配置 7 扩展性。 二Solr的体系结构 体系结构 Solr体系,功能模块介绍及配置。

以上是solr的架构图。具体应用时需要理解一下模块的作用及配置。 RequestHandler:接受请求,分发请求。另外也包含导入数据,如importhandler。UpdateHandlers –处理索引请求。 Search Components:作为handlder的成员变量。处理请求。 Facet:分类搜索 Tika:apache下处理文件的一个项目。 Filter,spelling :处理字符串 Http query/update Database/html importhandler 默认基本可以满足要求。如果不够则扩展相应的handler和component。

solr教程

Apache Solr 初级教程 (介绍、安装部署、Java接口、中文分词)Apache Solr 介绍 Solr 是什么? Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是必须的要求。 Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。 Lucene 是什么? Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。 目前已经有很多应用程序的搜索功能是基于 Lucene ,比如 Eclipse 帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。 Solr VS Lucene Solr 与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene ,因为Solr 底层的核心技术是使用Apache Lucene 来实现的,简单的说Solr 是Lucene 的服务器化。需要注意的是Solr 并不是简单的对Lucene 进行封装,它所提供的大部分功能都区别于Lucene 。 安装搭建Solr

安装Java 虚拟机 Solr 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可,但如果需要扩展功能或编译源码则需要下载JDK 来完成。可以通过下面的地址下载所需JDK 或JRE : ?OpenJDK (https://www.doczj.com/doc/5a10181423.html,/j2se/downloads.html) ?Sun (https://www.doczj.com/doc/5a10181423.html,/j2se/downloads.html) ?IBM (https://www.doczj.com/doc/5a10181423.html,/developerworks/java/jdk/) ?Oracle (https://www.doczj.com/doc/5a10181423.html,/technology/products/jrockit/index.html)安装步骤请参考相应的帮助文档。 安装中间件 Solr 可以运行在任何Java 中间件中,下面将以开源Apache Tomcat 为例讲解Solr 的安装、配置与基本使用。本文使用Tomcat5.5 解压版进行演示,可在下面地址下载最新版本https://www.doczj.com/doc/5a10181423.html,/download-55.cgi 安装Apache Solr 下载最新的Solr 本文发布时Solr1.4 为最新的版本,下文介绍内容均针对该版本,如与Solr 最新版本有出入请以官方网站内容为准。Solr官方网站下载地址: https://www.doczj.com/doc/5a10181423.html,/dyn/closer.cgi/lucene/solr/ Solr 程序包的目录结构 ?build :在solr 构建过程中放置已编译文件的目录。 ?client :包含了一些特定语言调用Solr 的API 客户端程序,目前只有Ruby 可供选择,Java 客户端叫SolrJ 在src/solrj 中可以找到。 ?dist :存放Solr 构建完成的JAR 文件、WAR 文件和Solr 依赖的JAR 文件。 ?example :是一个安装好的Jetty 中间件,其中包括一些样本数据和Solr 的配置信息。 o example/etc :Jetty 的配置文件。 o example/multicore :当安装Slor multicore 时,用来放置多个Solr 主目录。 o example/solr :默认安装时一个Solr 的主目录。 o example/webapps :Solr 的WAR 文件部署在这里。

SolrCloud使用教程、原理介绍 我心动了

SolrCloud使用教程、原理介绍 发布于2013 年 8 月 24 日,属于搜索分类,7,446 浏览数 SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案,是正在开发中的 Solr4.0 的核心组件之一,它的主要思想是使用 Zookeeper 作为集群的配置信息中心。 它有几个特色功能:①集中式的配置信息②自动容错③近实时搜索④查询时自动负载均衡。

下面看看 wiki 的文档: 1、SolrCloud SolrCloud 是指 Solr 中一套新的潜在的分发能力。这种能力能够通过参数让你建立起一个高可用、 容错的 Solr 服务集群。当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud(solr 云)。 看看下面“启动”部分内容,快速的学会怎样启动一个集群。后面有 3 个快速简单的例子, 它们展现怎样启动一个逐步越来越复杂的集群。检出例子之后,需要翻阅后面的部分了解 更加细节的信息。 2、关于 SolrCores 和 Collections 的一点儿东西 对于单独运行的 Solr 实例,它有个东西叫 SolrCore(Solr.xml 中配置的),它是本质上独立的 索引块。如果你打算多个索引块,你就创建多个 SolrCores。当同时部署SolrCloud 的时, 独立的索引块可以跨越多个 Solr 实例。这意味着一个单独的索引块能由不同服务器设备上多个 SolrCore 的索引块组成。我们把组成一个逻辑索引块的所有 SolrCores 叫做一个独立 索引块儿(collection)。一个独立索引块是本质上一个独立的跨越多个 SolrCore 索引块的索 引块,同时索引块尽可能随着多余的设备进行缩放。如果你想把你的两个 SolrCore Solr 建 立成 SolrCloud,你将有 2 个独立索引块,每个有多个独立里的 SolrCores 组成。 3、启动 下载 Solr4-Beta 或更高版本。 如果你还没了解,通过简单的Solr 指南让自己熟悉Solr。注意:在通过指南了解云特点前,重设所有的配置和移除指南的文档.复制带有预先存在的 Solr 索引的例子目录将导致文档计数关闭Solr 内嵌使用了Zookeeper 作为集群配置和协调运作的仓储。协调考虑作为一个包 含所有 Solr 服务信息的分布式文件系统。 如果你想用一个其他的而不是 8983 作为 Solr 端口,去看下面’ Parameter Reference’部分下 的关于solr.xml 注解 例 A:简单的 2 个 shard 集群 这个例子简单的创建了一个代表一个独立索引块的两个不同的 shards 的两个 solr 服务组成

Solr总结-吐血总结

Solr调研总结 1. Solr 是什么? Solr它是一种开放源码的、基于Lucene Java 的搜索服务器,易于加入到Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr的特性包括: ?高级的全文搜索功能 ?专为高通量的网络流量进行的优化 ?基于开放接口(XML和HTTP)的标准 ?综合的HTML管理界面 ?可伸缩性-能够有效地复制到另外一个Solr搜索服务器 ?使用XML配置达到灵活性和适配性 ?可扩展的插件体系 2. Lucene 是什么? Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是Apache Jakarta(雅加达)家族中的一个开源项目。也是目前最为流行的基于Java开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于Lucene ,比如Eclipse 帮助系统的搜索功能。Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。

3. Solr vs Lucene Solr与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene 不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr: Solr 是Lucene面向企业搜索应用的扩展。 Solr与Lucene架构图: Solr使用Lucene并且扩展了它! ?一个真正的拥有动态字段(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema) ?对Lucene查询语言的强大扩展! ?支持对结果进行动态的分组和过滤 ?高级的,可配置的文本分析 ?高度可配置和可扩展的缓存机制 ?性能优化

zheng-环境搭建及系统部署文档20170213(三版)

1Een 项目描述 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构:内容管理系统(门户、博客、论坛、问答等)、统一支付中心(微信、支付宝、在线网银等)、用户权限管理系统(RBAC细粒度用户权限、统一后台、单点登录、会话管理)、微信管理系统、第三方登录系统、会员系统、存储系统 https://www.doczj.com/doc/5a10181423.html,/zhengAdmin/src/ 2项目组织结构

3项目模块图 4项目使用到的技术4.1后端技术 Spring Framework SpringMVC: MVC框架

Spring secutity|Shiro: 安全框架 Spring session: 分布式Session管理MyBatis: ORM框架 MyBatis Generator: 代码生成 Druid: 数据库连接池 Jsp|Velocity|Thymeleaf: 模板引擎ZooKeeper: 协调服务 Dubbo: 分布式服务框架 TBSchedule|elastic-job: 分布式调度框架Redis: 分布式缓存数据库 Quartz: 作业调度框架 Ehcache: 缓存框架 ActiveMQ: 消息队列 Solr|Elasticsearch: 分布式全文搜索引擎FastDFS: 分布式文件系统 Log4J: 日志管理 Swagger2: 接口文档 sequence: 分布式高效ID生产 https://www.doczj.com/doc/5a10181423.html,/yu120/sequence AliOSS|Qiniu: 云存储 Protobuf|json: 数据传输 Jenkins: 持续集成工具 Maven|Gradle: 项目构建管理

基于solr的异构数据融合检索技术_梁艳

基于solr的异构数据融合检索技术 梁 艳1 刘双广1 劳定雄2 (1.重庆邮电大学通信与信息工程学院,重庆 400065;2.高新兴科技集团股份有限公司研发中心,广东 广州 510530) 摘 要:针对企业异构数据融合检索的需求,介绍了异构数据整合的常用方法和企业级搜索服务器solr的基本功能,结合xml异构数据整合、中文分词技术和友好的用户界面搭建了基于solr的异构数据融合检索系统,实现了对xml文件的索引和检索,为异构数据融合检索提供了解决方案。 关键词:solr;异构数据;XML;融合;检索 The Retrieval Technology of Heterogeneous Data Integration Based on Solr Abstract:For the need of enterprise heterogeneous data integration retrieval, this thesis introduces the common method of heterogeneous data integration and the basic function of Solr which is enterprise search server. Combined the XML heterogeneous data integration with the Chinese word segmentation technology and the friendly user interface,this paper built the heterogeneous data integration retrieval system based on Solr, realized the indexing and retrieval of XML document and provided solutions for heterogeneous data integration retrieval. Key words:solr; Heterogeneous data;xml;integration;retrieval 作者简介: 梁艳(1988-),女,汉族,重庆市潼南县人,重庆邮电大学硕士在读,研究方向:信息检索;刘双广(1965-),男,汉族,广东省广州人,重庆邮电大学硕士生导师,EMBA,研究方向:物联网;劳定熊(1976-),汉族,男,广东省广州人,高新兴科技集团股份有限公司架构师,硕士,研究方向:云计算。 1 背景 互联网技术的发展,使得信息数据爆炸式增长。特别是在企业信息中,其非结构数据占到了增长数据的80%,包括PDF、word文档,图像、音频和视频等。企业在不同的应用平台拥有不同的检索系统,这给用户检索信息带来了诸多不便。如何构建一个统一的检索平台,使得用户在海量的异构数据中实现统一检索,一直是研究人员研究的热点。 2 异构数据融合技术 异构数据是指数据格式不同,内容不一,描述不同内容的数据,包括结构化数据(如数据库)、半结构化数据(如HTML、 XML)和非结构化数据(如文本、图片)[1] 。数据的统一访问的基 础在于数据融合集成,目前对于解决异构数据融合的研究有数据仓库、数据抽取和数据转换。 数据仓库是指不同来源的数据在进入数据仓库之前,转换为统一的格式为复杂的查询提供统一的视图,实现数据的统一访问[2]。其代表性的成果是ETL集成工具,ETL [3]允许提取、转换和加载异构数据到数据仓库中和实现数据迁移任务。但数据仓库主要是针对不同数据库中的结构化数据的整合,很难应用于非结构化数据的集成、实现非结构化数据的统一访问[4]。 数据抽取是指将无结构的的文本结构化处理,即输入原始文本输出固定格式[5]。部分数据库管理系统自带有数据抽取工具,能够低成本的解决异构数据整合问题,但在实际应用中有一定的局限性。 XML整合是数据转换技术的代表,即将各种异构数据转换为统一的xml文本格式,实现异构数据整合。XML(eXtensible Markup Language,扩展标记语言)是互联网下的一个关键技术,它能很好地实现来源极端异构的数据描述和传输。XML能独立于应用系统,不受任何特殊的软件或者硬件平台限制,并且这些数据能重复使用,简单易懂,成为交换各种结构化、半结构化、非结构化信息的良好方式[6]。因此,采用XML文档作为底层数据的融合与集成技术,实现了异构数据源间数据共享并且更有效地利用信息资源。XML整合数据的一般模型为下图一所示: 3 solr搜索引擎 3.1 solr简介 Solr (Searching on Lucene Replication)[7] 是Apache 软件基金会下的一个开源子项目,它是一个高性能的、采用java5开发的、基于lucene全文搜索库的企业搜索服务器。提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。 3.2 solr体系架构 Solr的系统结构图[8]如图2所示,solr主要分为3层,solr 在lucene的基础上进行了大量的改进,其中solr的底层为对lucene一些功能的改进封装。中间层为solr的核心层,搜索引 擎的主要功能都是在这一层实现的,包括对文档进行分析、建立索引、配置solr运行文件和保存索引文件等。最顶层包括HTTP接口,负责通过HTTP传入和返回XML文档;管理界面和索引更新模块。另外,索引复制功能是一个独立的模块,它是由一个主索引和多个从索引构成,从索引从主索引复制索引,主索引负 图一 xml数据整合模型

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查询语法 Solr通过查询分析器的插件框架支持多种查询语法。在现有的分析器实现的插件,在Javadoc中看到qparserplugin的所有子类,和在QueryParser wiki页面查看。 指定查询分析器 用户可以指定在大多数地方,接受使用localparams语法查询字符串查询类型,例如:下面的查询字符串指定Lucene/Solr查询的默认操作”AND“和默认field的“text”: q={!lucene q.op=AND df=text}myfield:foo +bar –baz 在标准的SOLR搜索处理程序,该deftype参数可用于指定主查询的默认类型(IE:q参数)但它只影响主查询——所有其他查询参数的默认类型仍将Lucene。 q={!func}等效于solr标准查询的defType=func&q=popularity Default QParserPlugin: LuceneQParserPlugin 标准查询分析器语法Sol分析器是的Lucene的查询语法的一个超集,某些字符特殊和那些字符如果你想 与Lucene查询分析器的差异 在solr 中查询差异报告: 1、范围查询[ a TO z ],前缀查询a*,和通配符查询*b是常数评分(所有匹配的文件得到相同的分数)。 评分因素TF IDF,index boost,是没有用的。不限制terms次数的(如在Lucene的过去的版本)

2、A*可用于任一或两个端点来指定一个开放的范围查询。 field:[* TO 100]查询所有小与等于100的 field:[100 TO *]查询所有大于等于100的 field:[* TO *]查询所有文档 3、纯消极的查询(所有条款禁止)是允许的。 -inStock:false查询isStock字段值不是false的 -field:[* TO *]查询不在field字段内的值 4、函数查询 _val_:myfield _val_:"recip(rord(myfield),1,2,3)" 4、嵌套的任何类型的查询分析器查询支持(通过qparserplugin)。引用通常要封装嵌套查询如果它包含 保留字符。 例如:_query_:"{!dismax qf=myfield}how now brown cow" 虽然不是专门的语法差异,请注意如果你使用Solr”DateField”型,在这些领域的任何查询(典型的范围查询)应使用完整的ISO 8601的语法,,或datemath语法来获得相关数据。 ?timestamp:[* TO NOW] ?createdate:[1976-03-06T23:59:59.999Z TO *] ?createdate:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]?pubdate:[NOW-1YEAR/DAY TO NOW/DAY+1DAY] ?createdate:[1976-03-06T23:59:59.999Z TO 1976-03-06T23:59:59.999 Z+1YEAR] ?createdate:[1976-03-06T23:59:59.999Z/YEAR TO 1976-03-06T23:59:5 9.999Z] dismax和edismax查询分析器 (E)的dismax查询分析器提供了查询时间字段级升压的粒度,更少的特殊语法。(E)dismax通常是最好的第一选择查询分析器面临Solr应用的用户。(e)在这里详细描述了dismax处理参数:dismaxqparserplugin和extendeddismax。 注:特殊字符转义网址 请注意,在Solr查询语法的许多特征(最显着的加号:“+”)是在URL中的特殊字符,所以在手动构建请

虚拟机学习云环境第二篇Hadoop和Hbase 部署

目标: 在本人的T450笔记本win7操作系统环境下熟悉云计算环境基于开源项目nutch实现大量文本内容的快速分词及检索. Hadoop、HBase、ZooKeep、Solr、Nutch 上一篇完成了Linux基础环境的搭建和集群内SSH无密码登录的设置 这一篇完成Hadoop软件安装 一、创建集群目录 mkdir -p /data/cluster cd /data/cluster mkdirtmp mkdir-p hdfs/data mkdir-p hdfs/name mkdir-p hdfs/journal 二、zookeep安装 在MNODE节点上执行: 把zookeeper-3.4.9.tar.gz拷贝到/data/cluster目录下 cd /data/cluster tarvzxf zookeeper-3.4.9.tar.gz cd /data/cluster/zookeeper-3.4.9/conf cpzoo_sample.cfgzoo.cfg 修改zoo.cfg,修改后内容如下: # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/data/cluster/zookeeper-3.4.9/data # the port at which the clients will connect clientPort=2181 server.1=MNODE :2888:3888 server.2=SNODE :2888:3888 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60

solr中文

solr中文:使用 Apache Solr 实现更加灵巧的搜索 第 2 部分: 用于企业的 Solr 疯狂代码 https://www.doczj.com/doc/5a10181423.html,/ ?:http:/https://www.doczj.com/doc/5a10181423.html,/DeveloperUtil/Article54041.html 本文举例源代码或素材下载 在本系列 第 1 部分我为您介绍了 Apache Solr种基于 HTTP 开源搜索服务器它可以很容易地和多种Web 应用集成我展示了 Solr 最基本功能包括索引、搜索和浏览介绍了 Solr 模式并解释了它在配置 Solr 功能方面作用在本部分中我将通过列举 Solr 作为大型生产环境中理想解决方案时所具备特性来完成对 Solr 介绍涵盖主题包括管理、缓存Cache、复制和可扩展性 请参阅 第 1 部分 来获得安装和设置 Solr 指导 配置和管理 本部分介绍了可用于监视和控制 Solr 功能性诸多选项首先来看看 Solr Administration Start Page该页可在 http://localhost:8080/solr/admin/ 找到旦找到了起始页在继续的前请务必花些时间熟悉下上面各种菜单选项在起始页中根据这些选项所提供信息区别对它们进行了分组: Solr 给出了有关这种活动模式(请参见 第 1 部分)、配置以及当前部署统计数据详细信息 App server 给出了容器当前状态包括 threading 信息以及所有 Java 系统属性列表 Make a Query 提供了调试查询所需快捷界面以及到功能更加全面查询界面链接 Assistance 提供了到外部资源有用链接以便理解和解决使用 Solv 可能遇到些问题 如下章节详细介绍了这些菜单选项并重点突出了其中管理特性 要使用 Solr 配置选项可以单击页上 CONFIG 链接这会显示当前 solrconfig.xml 文件您可以在 举例应用dw-solr/solr/conf 目录找到该文件现在让我们先来看看和索引和查询处理有关些常见配置选项而和 缓存Cache、复制 和 扩展 Solr 有关配置选项则留到后面章节再介绍 索引配置 Index 标记段定义了控制 Solr 索引处理低水平 Lucene 原因Lucene 基准发布(位于 Lucene 源代码contrib/benchmark 的下)包含了很多可用来对这些原因更改效果进行基准测试工具此外请参阅 参考资料 节中

Solr课件

solr入门 课程计划: 1、solr服务介绍 2、solr服务的安装 3、solrhome的目录结构 4、自定义索引库 5、将数据库数据导入索引库 6、solrj对索引库的维护 7、solr案例 1solr服务介绍 1.1什么是solr Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene?. Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene 的全文搜索服务。 Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。 Solr提供了比Lucene更为丰富的查询语言, 同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 1.2solr与Lucene区别 Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索应用。Lucene仅提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索应用。

Solr的目标是打造一款企业级的搜索引擎系统,它是基于Lucene一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。 2solr服务安装与运行 2.1下载 地址:https://www.doczj.com/doc/5a10181423.html,/solr/ 2.2安装 解压solr-4.10.3后的目录结构: 2.3运行 执行example目录下的start.jar即可。 2.4访问 http://localhost:8983/solr/

高性能搜索solr 学习笔记 分享

高性能搜索SOLR 学习笔记分享 一.Query参数 1.CoreQueryParam查询的参数 1)q: 查询字符串,必须的。 2)q.op: 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻 辑),一般默认指定。 3)df: 默认的查询字段,一般默认指定。 4)qt:query type,指定查询使用的Query Handler,默认为“standard”。 5)wt:writer type。指定查询输出结构格式,默认为“xml”。在solrconfig.xml中定义 了查询输出格式:xml、json、python、ruby、php、phps、custom。 6)echoHandler:是否在查询结果中显示使用的Query Handler名称。 7)echoParams:是否显示查询参数。none:不显示;explicit:只显示查询参数; all:所有,包括在solrconfig.xml定义的Query Handler参数。 8)indent - 返回的结果是否缩进,默认关闭,用indent=true|on 开启,一般调试 json,php,phps,ruby输出才有必要用这个参数。 9)version - 查询语法的版本,建议不使用它,由服务器指定默认值。 https://www.doczj.com/doc/5a10181423.html,monQueryParameters 1)sort:排序,格式:sort=+[,+]…。 示例:(inStock desc, price asc)表示先“inStock”降序, 再“price”升序, 默认是相关性降序。。 2)start:用于分页定义结果起始记录数,默认为0。 3)rows:用于分页定义结果每页返回记录数,默认为10。 4)fq:filter query。使用Filter Query可以充分利用Filter Query Cache,提高检索性 能。作用:在q查询符合结果中同时是fq查询符合的,例如: q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time 是20081001到20091031之间的。 5)fl:field list。指定返回结果字段。以空格“ ”或逗号“,”分隔。 6)debugQuery:设置返回结果是否显示Debug信息。 7)explainOther:设置当debugQuery=true时,显示其他的查询说明。 8)defType:设置查询解析器名称。 9)timeAllowed:设置查询超时时间。 10)omitHeader:设置是否忽略查询结果返回头信息,默认为“false”。

我终于深入参与了一个分布式系统了,好多想法不一样了!

我终于深入参与了一个分布式系统了,好多想法不一样了! 原文出处:Turbo Zhang 的博客前言 过去两个月深入的参与了一个分布式系统的开发,记得之前有人说过“想成为架构师之前,都是从微观架构开始的”。尽 管我从没想过将来的某一天要成为一个架构师,或者领域专家,我只是想萌萌哒的编码,写着自己喜欢的Code,和一 群志同道合的朋友做出大家喜欢的商品和产品。但是工作久了慢慢的搭架子的事情还是会来到你的面前,因为时间总会把一部分人慢慢推向海边,使得他们成为最早见到阳光的人。不扯淡了,为什么要说阳光呢,还是因为过去的两(三)个月可能过的太充实也太痛苦了,完成之后,曙光来临的时候整个人是会发光的哦。“深度”参与是因为我终于有机会在搭 架子的过程中有了话语权和选择权,同时也会承担70%以上的编码工作。 之前我的自我认知是我可能在软件方面的积累还可以,比如设计模式,架构分层,程序解耦,API入手等方面,但是总觉得我在硬件网络方面积累的太少,太薄了。 比如: 不同操纵系统之间的特点;

网络端口管理与分发; 哪些网络协议可以帮助我们更好的完成工作,监控虚拟机的时候是在虚机上加代理好还是用协议去控制; 硬件是否支持分布式,在扩展过程中对于.net C#的兼容怎么样; 什么时候使用多线程,在把线程交给程序调度的时候我们怎么控制和捕捉线程的异常; 日志系统对于整个分散的系统是多么的重要; 何时使用关系数据库,什么时候使用Nosql; 消息队列用擅长的MSMQ还是RabbitMQ. 怎样有效的和其他部门的同事沟通; 用什么样的方式去有效调度不同语言开发的系统; 测试用例对于大系统从零散到完整是多么的重要; 系统标准,代码原则对于后期的维护余扩展是多么的重要;等; 项目简介 首先项目详细内容不便多说,简答的说,就是为国内某大型厂商建立一套协调其自身搭建的私有云以及其购买的公有 云的一套系统。说牛X一点就是:一套混合云系统。 使用Restful

Solr开发指南

Solr 全文检索技术

1.Solr介绍 15 2.Solr安装配置-SolrCore配置 15 3.Solr安装配置-Solr工程部署 10 4.Solr安装配置-Solr工程测试 15 5.Solr安装配置-多SorlCore配置 10 6.Solr入门--schema 20 7.Solr入门-安装中文分词器 15 8.Solr入门-自定义业务系统Field 20 9.Solr入门-SolrJ介绍10 10.Solr入门-SolrJ索引维护 20 11.Solr入门-数据导入处理器20 12.Solr入门-搜索语法 10 13.Solr入门-SolrJ-搜索 20 14.Solr案例-需求分析 10 15.Solr案例-架构设计 15 16.Solr案例-Service 20 17.Solr案例-Controller 20 18.Solr案例-主体调试 20 19.Solr案例-功能完善

1【Solr介绍】 1.1S olr是什么 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。 1.2S olr与Lucene的区别 Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索引擎。 Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。 1.3Solr下载 从Solr官方网站(https://www.doczj.com/doc/5a10181423.html,/solr/ )下载Solr4.10.3,根据Solr的运行环境,Linux下需要下载lucene-4.10.3.tgz,windows下需要下载lucene-4.10.3.zip。 Solr使用指南可参考:https://https://www.doczj.com/doc/5a10181423.html,/solr/FrontPage。

solr完整快速搭建版(学习笔记)

Solr学习笔记 由于公司一个网站需要实现搜索功能的更新换代,在和编辑和领导沟通了一段时间之后,我们决定不再使用之前的通过JDBC发送sql语句进行搜索的方法。一番比较,我们决定选用Lucene来搭建我们全文搜索的框架。后来由于开发时间有限,Solr对lucene的集成非常好,我们决定使用Struts+Spring+Solr+IKAnalyzer的一个开发模式来快速搭建一个企业级搜索平台。自己之前没有接触过这方面的东西,从不断看网上的帮助文档,逛论坛,逛wiki,终于一点一点的开发出一个有自己风格并又适合公司搜索要求的这么一个全文搜索功能。网上对于lucene,solr的资料并不是那么多,而且大多是拷贝再拷贝,开发起来难度是有的,项目缺陷也是有的,但是毕竟自己积累了这么一个搭建小型搜索引擎的经验,很有收获,所以准备写个笔记记录下来,方便自己以后回忆,而且可以帮助一下其他学者快速搭建一个企业级搜索。 主要思想: 此企业级搜索分2块,一块是Solr项目:仅关于Solr一系列配置,索引,建立/更新索引配置。另一块是网站项目:Action中通过httpclient通信,类似webService一个交互实现,访问配置完善并运行中的Solr,发送查询请求,得到返回的结果hits(solrJ查询,下面详解),传递给jsp页面。 1.下载包 Lucene3.5 Solr3.5 IKAnalyzer3.2.8中文分词器(本文也仅在此分词器配置的基础上) 开发时段:2011.12中旬至1月中旬 (请自己下载…) 都是最新版,个人偏好新东西,稳定不稳定暂不做评论。 2.搭建Solr项目: 1.apache-solr-3.5.0\dist下得apache-solr-3.5.0.war复制到tomcat下webapps目录, 并更改名字为solr.war,运行生成目录. 2.将IKAnalyzer的jar包导入刚生成的项目中lib目录下。 3.Solr项目配置中文分词: 在solr/conf/schema.xml中节点下添加个类型(可直接拷贝下段代码)

【黑马程序员】面试题-利用solr实现商品的搜索功能

【黑马程序员】面试题-利用solr实现商品的搜索功 能 问题提出:当我们访问购物网站的时候,我们可以根据我们随意所想的内容输入关键字就可以查询出相关的内容,这是怎么做到呢?这些随意的数据不可能是根据数据库的字段查询的,那是怎么查询出来的呢,为什么千奇百怪的关键字都可以查询出来呢? 答案就是全文检索工具的实现,luncence采用了词元匹配和切分词。举个例子:北京天安门------luncence切分词:北京京天天安安门等等这些分词。所以我们搜索的时候都可以检索到。 有一种分词器就是ik中文分词器,它有细粒度切分和智能切分,即根据某种智能算法。 这就使用solr的最大的好处:检索功能的实现。 使用步骤; (1)solr服务器搭建,因为solr是用java5开发的,所以需要jdk和tomcat。搭建部署 (2)搭建完成后,我们需要将要展示的字段引入solr的库中。配置sring与solr结合,工程启动的时候启动solr (3)将数据库中的查询内容导入到solr索引库,这里使用的是solrj的客户端实现的。具体使用可以参考api (4)建立搜索服务,供客户端调用。调用solr,查询内容,这中间有分页功能的实现。solr高亮显示的实现。 (5)客户端接收页面的请求参数,调用搜索服务,进行搜索。

业务字段判断标准: 1、在搜索时是否需要在此字段上进行搜索。例如:商品名称、商品的卖点、商品的描述 (这些相当于将标签给了solr,导入商品数据后,solr对这些字段的对应的商品的具体内容进行分词切分,然后,我们就可以搜索到相关内容了) 2、后续的业务是否需要用到此字段。例如:商品id。 需要用到的字段: 1、商品id 2、商品title 3、卖点 4、价格 5、商品图片 6、商品分类名称 7、商品描述 Solr中的业务字段: 1、id——》商品id 其他的对应字段创建solr的字段。 [AppleScript] 纯文本查看复制代码 ? 01 02 03 04 05 06 07

相关主题
文本预览
相关文档 最新文档