SOLR中文教程

SOLR中文教程
SOLR中文教程

SOLR中文帮助文档

2010-10

目录

1概述 (4)

1.1企业搜索引擎方案选型 (4)

1.2Solr的特性 (4)

1.2.1Solr使用Lucene并且进行了扩展 (4)

1.2.2Schema(模式) (5)

1.2.3查询 (5)

1.2.4核心 (5)

1.2.5缓存 (5)

1.2.6复制 (6)

1.2.7管理接口 (6)

1.3Solr服务原理 (6)

1.3.1索引 (6)

1.3.2搜索 (7)

1.4源码结构 (8)

1.4.1目录结构说明 (8)

1.4.2Solr home说明 (9)

1.4.3solr的各包的说明 (10)

1.5版本说明 (11)

1.5.1 1.3版本 (11)

1.5.2 1.4版本 (12)

1.6分布式和复制Solr 架构 (12)

2Solr的安装与配置 (13)

2.1在Tomcat下Solr安装 (13)

2.1.1安装准备 (13)

2.1.2安装过程 (13)

2.1.3验证安装 (14)

2.2中文分词配置 (15)

2.2.1mmseg4j (15)

2.2.2paoding (19)

2.3多核(MultiCore)配置 (22)

2.3.1MultiCore的配置方法 (22)

2.3.2为何使用多core ? (23)

2.4配置文件说明 (23)

2.4.1schema.xml (24)

2.4.2solrconfig.xml (25)

3Solr的应用 (29)

3.1SOLR应用概述 (29)

3.1.1Solr的应用模式 (29)

3.1.2SOLR的使用过程说明 (30)

3.2一个简单的例子 (30)

3.2.1Solr Schema 设计 (30)

3.2.2构建索引 (30)

3.2.3搜索测试 (31)

3.3搜索引擎的规划设计 (32)

3.3.1定义业务模型 (32)

3.3.2定制索引服务 (34)

3.3.3定制搜索服务 (34)

3.4搜索引擎配置 (34)

3.4.1Solr Schema 设计(如何定制索引的结构?) (34)

3.5如何进行索引操作? (36)

3.5.1基本索引操作 (36)

3.5.2批量索引操作 (37)

3.6如何进行搜索 (39)

3.6.1搜索语法 (39)

3.6.2排序 (42)

3.6.3字段增加权重 (42)

3.6.4Solr分词器、过滤器、分析器 (42)

3.6.5Solr高亮使用 (46)

4SolrJ的用法 (46)

4.1搜索接口的调用实例 (46)

4.2Solrj的使用说明 (47)

4.2.1Adding Data to Solr (47)

4.2.2Directly adding POJOs to Solr (49)

4.2.3Reading Data from Solr (51)

4.3创建查询 (51)

4.4使用SolrJ 创建索引 (52)

4.5Solrj包的结构说明 (53)

4.5.1CommonsHttpSolrServer (53)

4.5.2Setting XMLResponseParser (53)

4.5.3Changing other Connection Settings (53)

4.5.4EmbeddedSolrServer (54)

5Solr的实际应用测试报告 (54)

5.1线下压力测试报告 (54)

5.2线上环境运行报告 (54)

6solr性能调优 (55)

6.1Schema Design Considerations (55)

6.1.1indexed fields (55)

6.1.2stored fields (55)

6.2Configuration Considerations (55)

6.2.1mergeFactor (55)

6.2.2mergeFactor Tradeoffs (56)

6.3Cache autoWarm Count Considerations (56)

6.4Cache hit rate(缓存命中率) (56)

6.5Explicit Warming of Sort Fields (56)

6.6Optimization Considerations (56)

6.7Updates and Commit Frequency Tradeoffs (56)

6.8Query Response Compression (57)

6.9Embedded vs HTTP Post (57)

6.10RAM Usage Considerations(内存方面的考虑) (57)

6.10.1OutOfMemoryErrors (57)

6.10.2Memory allocated to the Java VM (57)

7FAQ (58)

7.1出现乱码或者查不到结果的排查方法: (58)

概述

企业搜索引擎方案选型

由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有集中方案可供选择:

基于Lucene自己进行封装实现站内搜索。工作量及扩展性都较大,不采用。

调用Google、Baidu的API实现站内搜索。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,暂时不采用。

基于Compass+Lucene实现站内搜索。适合于对数据库驱动的应用数据进行索引,尤其是替代传统的like …%expression%?来实现对varchar或clob等字段的索引,对于实现站内搜索是一种值得采纳的方案。但在分布式处理、接口封装上尚需要自己进行一定程度的封装。

基于Solr实现站内搜索。封装及扩展性较好,提供了较为完备的解决方案,因此在门户社区中采用此方案。

基于以述的几种方案的综合分析,对于我们公司的搜索引擎方案,采用solr来实现比较合适。

Solr的特性

Apache Solr 是一个开源的搜索服务器,Solr 使用Java 语言开发,主要基于HTTP 和Apache Lucene 实现。定制Solr 索引的实现方法很简单,用POST 方法向Solr 服务器发送一个描述所有Field 及其内容的XML 文档就可以了。定制搜索的时候只需要发送HTTP GET 请求即可,然后对Solr 返回的信息进行重新布局,以产生利于用户理解的页面内容布局。Solr 1.3 版本开始支持从数据库(通过JDBC)、RSS 提要、Web 页面和文件中导入数据,但是不直接支持从二进制文件格式中提取内容,比如MS Office、Adobe PDF 或其他专有格式。

更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引

Solr的特性包括:

高级的全文搜索功能

专为高通量的网络流量进行的优化

基于开放接口(XML和HTTP)的标准

综合的HTML管理界面

可伸缩性-能够有效地复制到另外一个Solr搜索服务器

使用XML配置达到灵活性和适配性

可扩展的插件体系

Solr使用Lucene并且进行了扩展

一个真正的拥有动态域(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema)

对Lucene查询语言的强大扩展!

支持对结果进行动态的分组和过滤

高级的,可配置的文本分析

高度可配置和可扩展的缓存机制

性能优化

支持通过XML进行外部配置

拥有一个管理界面

可监控的日志

支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution) Schema(模式)

定义域类型和文档的域

能够驱动智能处理

声明式的Lucene分析器规范

动态域能够随时增加域

拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域

显式类型能够减少对域类型的猜测

能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置

查询

拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口

高亮的上下文搜索结果

基于域值和显式查询的片段式搜索(Faceted Search)

对查询语言增加了排序规范

常量的打分范围(Constant scoring range)和前缀式查询-没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制

函数查询(Function Query)-通过关于一个域的数值或顺序的函数对打分进行影响

性能优化

核心

可插拔的查询句柄(Query Handler)和可扩展的XML数据格式

使用唯一键的域能够增强文档唯一性

能够高效地进行批量更新和删除

用户可配置的文档索引变化触发器(命令)

并发控制的搜索器

能够正确处理数字类型,从而能够进行排序和范围搜索

能够控制缺失排序域的文档

支持搜索结果的动态分组

缓存

可配置的查询结果,过滤器,和文档缓存实例

可插拔的缓存实现

后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求(???)。

后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果

快速和小的过滤器实现

支持自动热启的用户级别的缓存

复制

能够将使用rsync传输时改变的索引部分有效的发布

使用拉策略(Pull Strategy)来简化增加搜索器

可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择

管理接口

能够对缓存使用,更新和查询进行综合统计

文本分析调试器,能够显示每个分析器每个阶段的结果

基于WEB的查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等

Solr服务原理

Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。在Solr中,用户通过向部署在servlet 容器中的Solr Web应用程序发送HTTP 请求来启动索引和搜索。Solr 接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过HTTP 以同样的方式返回响应。默认配置返回Solr的标准XML 响应,也可以配置Solr的备用响应格式。

索引

可以向Solr索引servlet传递四个不同的索引请求:

add/update允许向Solr添加文档或更新文档。直到提交后才能搜索到这些添加和更新。

commit 告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。

optimize 重构Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。

delete 可以通过id 或查询来指定。按id 删除将删除具有指定id 的文档;按查询删除将删除查询返回的所有文档。

要实现添加文档索引则只需要调用搜索接口以HTTP POST的方式提交XML报文。(索引接口:http://192.168.10.85:18080/solr/update),下面是添加文档的示例报文:

注:多核心时为这个地址http://192.168.10.85:18080/solr/core0/update/

TWINX2048-3200PRO

CORSAIR XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unb uffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail Corsair Microsystems Inc.

electronics

memory

CAS latency 2, 2-3-3-6 timing, 2.75v, unbuffered, hea t-spreader

185

5

true

VS1GB400C3

CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffer ed DDR 400 (PC 3200) System Memory - Retail

Corsair Microsystems Inc.

electronics

memory

74.99

7

true

搜索

示例中,查询词“ipad”的请求被提交,要求返回10个结果。想知道更多有关各种可选查询选项的信息,请参看下文的“搜索语法”部分。

返回的搜索结果报文:

0

6

10

0

*,score

true

content:"faceted browsing"

1.058217

http://localhost/myBlog/solr-rocks-again.html

Solr is Great

solr,lucene,enterprise,search,greatness

Solr has some really great features, like faceted browsing and re plication

Solr has some really great features, like faceted browsing and re plication

2007-01-07T05:04:00.000Z

solr,lucene,enterprise,search,greatness

8

Solr is Great

http://localhost/myBlog/solr-rocks-again.html

Solr has some really great features, like faceted

browsing and replication

源码结构

目录结构说明

我们下载的Solr包后,进入Solr所在的目录,我们可以看到以下几个目录:build、client、dist、example、lib、site、src。下面分别对其进行介绍。

build:该目录是在ant build过程中生成的,其中包含了未被打包成jar或是war的class文件以及一些文档文件。

client:该目录包含了特定语言的Solr客户端API,使得使用其他语言的用户能通过HTTP用XML与Solr进行通话。现在该目录里面虽然包含javascript、python、ruby三个子目录,但是到目前为止只包含一部分的ruby的代码,其他语言仍是空的。另外,Solr 的Java客户端称为SolrJ,其代码位于src/solrj目录下面。在之后的文章中我会详细介绍Solr客户端的使用。

dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。还记得上一篇文章中,我们在build 1.4版本的Solr源代码后需要部署example吗?其实就是将该目录下面的apache-solr-1.4.war部署到Jetty上面去,并重命名为solr.war。

example:这个目录实际上是Jetty的安装目录。其中包含了一些样例数据和一些Solr 的配置。

其中一些子目录也比较重要,这里也对它们稍作介绍。

example/etc:该目录包含了Jetty的配置,在这里我们可以将Jetty的默认端口从8983改为80端口。

将其中的8983端口换成80端口。注意更改端口后启动Jetty可能会提示你没有权限,你需要使用sudo java -jar start.jar来运行。

example/multicore:该目录包含了在Solr的multicore中设置的多个home目录。在之后的文章中我会对其进行介绍。

example/solr:该目录是一个包含了默认配置信息的Solr的home目录。

详见下面的“solr home说明”

example/webapps:Jetty的webapps目录,该目录通常用来放置Java的Web应用程序。在Solr中,前面提到的solr.war文件就部署在这里。

lib:该目录包含了所有Solr的API所依赖的库文件。其中包括Lucene,Apache commons utilities和用来处理XML的Stax库。

site:该目录仅仅包含了Solr的官网的网页内容,以及一些教程的PDF文档。

src:该目录包含了Solr项目的整个源代码。这里对其各个子目录也做相应的介绍。

src/java:该目录存放的是Solr使用Java编写的源代码。

src/scripts:该目录存放的是配置Solr服务器的Unix Bash Shell脚本,在后面介绍多服务器配置中将会有重要的作用。

src/solrj:前面提到过该目录存放的是Solr的Java版本的客户端代码。

src/test:该目录存放的是测试程序的源代码和测试文件。

src/webapp:该目录存放的是管理Solr的Web页面,包括Servlet和JSP文件,其构成了前面提到的WAR文件。管理Solr的JSP页面在web/admin目录下面,如果你有兴趣折腾Solr可以找到相应的JSP的页面对其进行设置

Solr home说明

所谓的Solr home目录实际上是一个运行的Solr实例所对应的配置和数据(Lucene索引)。在上一篇文章中我提到过在Solr的example/solr目录就是一个Solr用做示例的默认配置home目录。实际上example/multicore也是一个合法的Solr home目录,只不过是用来做mult-core设置的。那么我们来看看example/solr这个目录里面都有些什么。

example/solr目录下主要有以下一些目录和文件:

bin:如果你需要对Solr进行更高级的配置,该目录建议用来存放Solr的复制脚本。

conf :该目录下面包含了各种配置文件,下面列出了两个最为重要的配置文件。其余的.txt和.xml文件被这两个文件所引用,如用来对文本进行特殊的处理。

conf/schema.xml:该文件是索引的schema,包含了域类型的定义以及相关联的analyzer链。

conf/solrconfig.xml:该文件是Solr的主配置文件。

conf/xslt:该目录包含了各种XSLT文件,能将Solr的查询响应转换成不同的格式,如:Atom/RSS等。

data:包含了Lucene的二进制索引文件。

lib:该目录是可选的。用来放置附加的Java JAR文件,Solr在启动时会自动加载该目录下的JAR文件。这就使得用户可以对Solr的发布版本(solr.war)进行扩展。如果你的扩展并不对Solr本身进行修改,那么就可以将你的修改部署到JAR文件中放到这里。

Solr是如何找到运行所需要的home目录的呢?

Solr首先检查名为solr.solr.home的Java系统属性,有几种不同的方式来设置该Java系统属性。一种不管你使用什么样的Java应用服务器或Servlet引擎都通用的方法是在调用Java的命令行中进行设置。所以,你可以在启动Jetty的时候显式地指定Solr的home目录java

-Dsolr.solr.home=solr/ -jar start.jar。另一种通用的方法是使用JNDI,将home目录绑定到

java:comp/env/solr/home。并向src/webapp/web/WEB-INF/web.xml添加以下一段代码:

1

2 solr/home

3 solr/

4 https://www.360docs.net/doc/a16549527.html,ng.String

5

实际上这段XML在web.xml文件中已经存在,你只需要把原来注释掉的xml取消注释,添加你所要指向的home目录即可。因为修改了web.xml文件,所以你需要运行ant dist-war来重新打包之后再部署WAR文件。

最后,如果Solr的home目录既没有通过Java系统属性指定也没有通过JNDI指定,那么他将默认指向solr/。

在产品环境中,我们必须设置Solr的home目录而不是让其默认指向solr/。而且应该使用绝对路径,而不是相对路径,因为你有可能从不同的目录下面启动应用服务器。

注:Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet

提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。

开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行

(stand-alone)的Java应用提供网络和web连接。

solr的各包的说明

分析Apache Solr的各个包,力图详细地分析Solr的设计和架构。Apache Solr由12个包组成,如下:

org.apache.solr.analysis

org.apache.solr.core

org.apache.solr.request

org.apache.solr.schema

org.apache.solr.search

org.apache.solr.search.function

org.apache.solr.servlet

org.apache.solr.tst

org.apache.solr.update

org.apache.solr.util

org.apache.solr.util.test

org.apache.solr.util.xlst

我们先从使用者的角度出发,最先看到的当然是servlet,因为Solr本身是个独立的网络应用程序,需要在Servlet容器中运行来提供服务,所以servlet是用户接触的最外层。我们看看

org.apache.solr.servlet包。这个包很简单,只有两个类:SolrServlet和SolrUpdateServlet.我们很容易从类名中猜出这两个类的用途。

SolrServlet类继承HttpServlet类,只有四个方法:

init()

destroy()

doGet()

doPost()

SolrServlet类中除了普通的Java类对象(包括Servlet相关的)外,有四个Solr本身的类,还有一个Solr本身的异常。其中两个类和一个异常属于org.apache.solr.core包,两个类属于

org.apache.solr.request包。属于core包的有:

Config:

SolrCore:

属于request包的有:

SolrQueryResponse:

QueryResponseWriter:

分析一下这个SolrServlet类。首先servlet会调用init()方法进行初始化:通过Context查找java:comp/env/solr/home来确定Solr的主目录(home),接着调用Config.setInstanceDir(home)方法设置这个实例的目录。然后通过SolrCore.getSolrCore()来获得一个SolrCore实例。destroy()方法将会在Servlet对象销毁时调用,仅仅调用core.close()关闭SolrCore实例。

当用户请求进来时doPost()简单地将任务交给doGet()完成,主要的任务由doGet()完成。分析一下doGet()方法:

使用SolrCore和doGet()参数request生成一个SolrServletRequest对象(注意:这个SolrServletRequest类不是公开类,位于org.apache.solr.servlet包中,继承了SolrQueryRequestBase类,仅仅接受SolrCore和HttpServletRequest对象作为参数)

然后SolrCore执行execute()方法(参数为SolrServletRequest和SolrQueryResponse)

由此可见,真正的处理核心是SolrCore的execute方法

版本说明

1.3版本

Solr 的 1.3 版本以 Apache Lucene 2.3 版本的巨大性能提升为基础,并增加了一个新的、向后兼容的、即插即用组件架构。该架构使开发人员踊跃创建可以进一步增强 Solr 的组件。例如,1.3 版本就包含能够实现以下功能的组件:

“您是不是要找……” 拼写检查

查找“类似的”Document

根据编辑输入(又称付费排序)覆盖搜索结果

另外,查询解析、搜索、分类以及调试这样的现有功能也被组件化了。现在,您可以通过组合这些组件来自定义创建 SolrRequestHandler。最后,Solr 还增加了直接为数据库内容创建索引的功能,并且通过分布式搜索来支持庞大的系统,这一点对很多企业都很重要。

Solr 1.3 发生了很大的变化。它有很多新的特性,比如拼写检查、数据导入、编辑排序和分布式搜索。此外,还学习了 Solr 的增强功能,包括一个更新、更快的 Lucene 版本。Solr 有许多地方改变了,也有许多地方没有改变。Solr 仍然是一个可靠的、可行的、支持良好的搜索服务器,并且已经可以部署到企业中。现在,Solr 开发人员开始研究添加文档聚合、更多的分析选项、Windows 友好的复制以及复制文档检测等特性。

1.4版本

Solr 1.4.1发布了!此版本是一个bug修复版,同时也将Lucene升级到了Lucene 2.9.3。作为Java开源世界最为著名的全文检索工具来说,Lucene名气之大是在是可想而知了。而Solr是基于Lucene的一个企业级全文检索工具实现。

Solr底层基于Lucene,而操作完全基于web方式Solr同时提供检索高亮标记,动态集群,数据库整合,多种文档支持的特性,因此是用来制作企业级全文检索的一个良好的选择。

Solr完全采用Java编写,因此具有跨平台的能力,可以运行在Linux,Unix等多种支持Java 的平台上。而Solr既可以作为独立应用部署在应用程序服务器上(例如Tomcat),也可以通过的REST和JSON api来与现有的应用进行整合,因此使用起来十分灵活方便。

分布式和复制Solr 架构

图1

注意,图 1 中输入的请求可以进入任何一个复制的片中,因为它们是功能齐全的 Solr 实例。然后,检索节点会将请求发送到其他片。这些请求仅仅是普通的 Solr 请求。要将请求提交到 Solr

合于这里的论述,但不能用于您的设置),主服务器在端口 8983 上,从服务器在端口 7574 上。输入的请求进入端口 8983 上的实例,然后它将请求发送到片式服务器上。应用程序很可能

将 shards 参数值设置成 solrconfig.xml 文件中的 SolrRequestHandler 的默认配置的一部分,这样就不需要在每次查询时都传入所有片式服务器的名称了。

Solr的安装与配置

在Tomcat下Solr安装

下面以Linux下安装配置Solr进行说明,windows与此类似。

安装准备

下载tomcat 6.0.20:

https://www.360docs.net/doc/a16549527.html,/

tomcat调优:

调优tomcat 加大内存和连接数

MaxThread 500

MinSpareThread 25

MaxSpareThread75

Xmx 1024M

操作系统网络参数优化

用做测试的各台服务器,均在/etc/sysctl.conf配置文件中增加如下内核参数:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 5

下载solr

下载地址:https://www.360docs.net/doc/a16549527.html,/lucene/solr/1.4.1/

详情请见:https://www.360docs.net/doc/a16549527.html,/solr/Solr1.4

下载分词器:

下载地址:https://www.360docs.net/doc/a16549527.html,/p/mmseg4j/

下载词库:

https://www.360docs.net/doc/a16549527.html,/p/mmseg4j/downloads/detail?name=data.zip&can=2&q=

安装过程

安装tomcat6

不到了。

将下载的solr包下面的dist文件夹中的apache-solr-1.4.1.war 拷贝到tomcat的webapps 并且改名为 solr.war 一般情况下会自动生成相应的文件夹。

新建/opt/solr-tomcat/solr文件夹,把下载的solr包中的example/solr文件夹下面的所有文件放入到 /opt/solr-tomcat/solr里面。

最后一步配置添加solr.home环境变量,可以有二种方式(两种取其一即可):

a)基于环境变量

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

b

在tomcat的conf文件夹建立Catalina文件夹,然后在Catalina文件夹中在建立localhost文件

注:如果没有设定solr.solr.home环境变量或JNDI的情况下,Solr查找./solr,因此在

启动时候需要切换到/opt/solr-tomcat

验证安装

访问solr管理界面http://ip:port/solr

打开管理后台

打开浏览器,输入:http://192.168.10.85:18080/solr/admin/(注:多核心时为这个地址

http://192.168.10.85:18080/solr/,首页会列出多核的链接,点击进入),就可以访问solr服务了如果出现如下图示,表示配置成功。

注:观察这个指定的solr主位置,里面存在两个文件夹:conf和data。其中conf里存

放了对solr而言最重要的两个配置文件schema.xml和solrconfig.xml。data则用于存

放索引文件,schema.xml主要包括types、fields和其他的一些缺省设置。

solrconfig.xml用来配置Solr的一些系统属性,例如与索引和查询处理有关的一些

常见的配置选项,以及缓存、扩展等等。

中文分词配置

mmseg4j

下面主要说的是怎么在solr中加入中文分词(引入实现mmseg算法的第三方开源项目)。

下载分词器:https://www.360docs.net/doc/a16549527.html,/p/mmseg4j/

下载词库:https://www.360docs.net/doc/a16549527.html,/p/mmseg4j/downloads/detail?name=data.zip&can=2&q= 将解压后的mmseg4j-1.8.2目录下的mmseg4j-all-1.8.2.jar拷贝到Tomcat

_HOME\webapps\solr\WEB-INF\lib目录下。

添加词库:在/opt/solr-tomcat/solr目录下新建dic文件夹,将解压后的sogou-dic\data目录下的words.dic拷贝到/opt/solr-tomcat/solr/dic目录下。

更改schema.xml(/opt/solr-tomcat/solr /conf/)文件,使分词器起到作用。

在schema.xml的和部分新增如下配置:

……

positionIncrementGap="100" >

class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex"

dicPath="/opt/solr-tomcat/solr/dic"/>

positionIncrementGap="100" >

mode="max-word" dicPath="/opt/solr-tomcat/solr/dic"/>

positionIncrementGap="100" >

mode="simple" dicPath="/opt/solr-tomcat/solr/dic"/>

……

注:dicPath="/opt/solr-tomcat/solr/dic "是你的词库路径。

……

multiValued="true"/>

multiValued="true"/>

multiValued="true"/>

……

重启你的tomcat。

访问:http://192.168.10.85:18080/solr/admin/analysis.jsp可以看mmseg4j 的分词效果。在Field 的下拉菜单选择name,然后在应用输入complex。分词的结果,如下图:

好了,可以运行起来了,那就添加个文档试下,在解压后的apache-solr-1.4.0\example\exampledocs目录

还有在查询中文时需要把tomcat设置成URIEncoding="UTF-8";

查看是否有数据,访问:http://localhost:8089/solr/admin/ 在Query String: 中输入“中国”,显示如下图所示:

到这里,分词成功。至于schema.xml中的配置属性会在下一章中进行详细的介绍。

[Solr分词顺序]

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

索引

1:空格whitespaceTokenize

2:过滤词(停用词,如:on、of、a、an等) StopFilter

3:拆字WordDelimiterFilter

4:小写过滤LowerCaseFilter

5:英文相近词EnglishPorterFilter

6:去除重复词RemoveDuplicatesTokenFilter

查询

1:查询相近词

2:过滤词

3:拆字

4:小写过滤

5:英文相近词

6:去除重复词

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

注:

mmseg4j :complex 1200kb/s左右, simple 1900kb/s左右

mmseg4j :自带sogou词库,支持名为wordsxxx.dic(如:data/words-my.dic),utf8文本格式的用户自定义词库,一行一词。不支持自动检测。-Dmmseg.dic.path

MMseg4jHandler(1.8以后支持): 添加MMseg4jHandler 类,可以在solr中用url的方式来控制加载检测词库。参数:

dicPath 是指定词库的目录,特性与MMSegTokenizerFactory中的dicPath一样(相对目录是,是相对solr.home)。

check 是指是否检测词库,其值是true 或on。

reload 是否尝试加载词库,其值是true 或on。此值为true,会忽视check 参数。solrconfig.xml:

dic

此功能可以让外置程序做相关的控制,如:尝试加载词库,然后外置程序决定是否重做索引。

paoding

对全文检索而言,中文分词非常的重要,这里采用了qieqie庖丁分词。集成非常的容易,我下载的是

2.0.4-alpha2版本,其中它支持最多切分和按最大切分。创建自己的一个中文TokenizerFactory继承自solr

的BaseTokenizerFactory。

/**

* Created by IntelliJ IDEA.

* User: ronghao

* Date: 2007-11-3

* Time: 14:40:59

* 中文切词对庖丁切词的封装

*/

public class ChineseTokenizerFactory extends BaseTokenizerFactory { /**

* 最多切分默认模式

*/

public static final String MOST_WORDS_MODE = "most-words";

/**

* 按最大切分

*/

public static final String MAX_WORD_LENGTH_MODE = "max-word-length";

private String mode = null;

public void setMode(String mode) {

if (mode==null||MOST_WORDS_MODE.equalsIgnoreCase(mode)

|| "default".equalsIgnoreCase(mode)) {

this.mode=MOST_WORDS_MODE;

} else if (MAX_WORD_LENGTH_MODE.equalsIgnoreCase(mode)) { this.mode=MAX_WORD_LENGTH_MODE;

}

else {

throw new IllegalArgumentException("不合法的分析器Mode参数设置:" + mode);

}

}

@Override

public void init(Map args) {

super.init(args);

setMode(args.get("mode"));

}

public TokenStream create(Reader input) {

return new PaodingTokenizer(input, PaodingMaker.make(),

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.360docs.net/doc/a16549527.html,/j2se/downloads.html) ?Sun (https://www.360docs.net/doc/a16549527.html,/j2se/downloads.html) ?IBM (https://www.360docs.net/doc/a16549527.html,/developerworks/java/jdk/) ?Oracle (https://www.360docs.net/doc/a16549527.html,/technology/products/jrockit/index.html)安装步骤请参考相应的帮助文档。 安装中间件 Solr 可以运行在任何Java 中间件中,下面将以开源Apache Tomcat 为例讲解Solr 的安装、配置与基本使用。本文使用Tomcat5.5 解压版进行演示,可在下面地址下载最新版本https://www.360docs.net/doc/a16549527.html,/download-55.cgi 安装Apache Solr 下载最新的Solr 本文发布时Solr1.4 为最新的版本,下文介绍内容均针对该版本,如与Solr 最新版本有出入请以官方网站内容为准。Solr官方网站下载地址: https://www.360docs.net/doc/a16549527.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 文件部署在这里。

拓薪教育-solr教程

全文检索技术Solr 讲师:任亮

1课程计划 1、站内搜索技术的选型 2、什么是Solr 3、Solr的安装及配置,solr整合tomcat。 4、Solr对索引库的维护,基于solr的后台管理界面 a)增加文档 b)删除文档 c)修改文档 5、Solr查询索引,基于solr的后台管理界面 6、Solr的客户端SolrJ a)索引的维护 b)索引的查询 7、综合案例,电商网站的搜索功能 2站内搜索技术的选型 1、Lucene实现站内搜索。开发工作量大,还要对索引库的维护投入大量的工作,索引的优化查询的优化,大并发量的考虑。不推荐使用。 2、可以使用搜索搜索引擎提供站内搜索功能。索引库放在搜索引擎上,不能维护。优点就非常简单。 3、solr技术,solr是基于lucene开发的一个全文检索服务器,提供了全套的全文检索解决方案。推荐使用的技术。 3什么solr 3.1 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不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

轻松使用SaltStack管理成千上万台服务器(入门教程)

目录树引言:一个”非专职运维人员“的烦恼 Salt快速入门 1. 安装配置 2. 安装管理端(master) 3. 安装被管理端(minion) 4. 接受minion的托管请求 5. 测试 Salt的强大功能 1. 批量操作(targeting) 2. 节点分组(nodegroups) 3. 命令执行(execution) 4. 节点信息(grains) 5. 配置管理(state) 6. 小结 Salt state实例解析 1. 目录结构 2. apache/init.sls 3. ssh/init.sls 4. ssh/server.sls 5. ssh/custom-server.sls 引言:一个”非专职运维人员“的烦恼加入到某证券公司的IT部门,尽管所在的部门挂了一个“研发部”的名字,但是我发现有大概40%的时间是在做运维工作。

这来自两种情况: 1. 自主开发的应用,需要持续的改进,不断的更新、发布、部署、调整配置,这不是运维部门喜欢的状态。 2. 软件商提供的“产品”无法满足运维部门的要求:无法通过简单的 Q&A 文档保证系统的正常运行,经常需要有一定技术能力的人员解决系统运行过程中各种稀奇古怪的问题。 这种情况下只能自己做一个“非专职运维人员”,需要频繁的登录各种服务器,执行一些命令来查看状态或者更改配置(包括配置文件的变更和软件包的安装部署)。很多操作都是不断的重复,日复一日,让人厌烦。 ”重复的工作应该交给程序去做“,所以我自己写过一些脚本。为了避免将脚本上传到几十台服务器并且不时进行更改,我使用Fabric来进行服务器的批量操作。 尽管避免了”批量的人工操作“,但我还是在进行”人工的批量操作“。远远没有实现自动管理。将有限的生命解放出来,投入到更有意义的编码工作是一个奔四程序员应有的追求,所以我又睁大红肿的眼睛,迷茫的搜索这个世界。 我发现了Puppet,Chef和CFEngine,但是并不满意。直到我发现了Salt,我的眼前一亮:这正是我所需要的东西。 如果说Salt有什么独特之处打动了我,那就是: 简单:可能是源于python的简约精神,Salt的安装配置和使用简单到了令人发 指的地步。任何稍有经验的linux使用者可以在10分钟之内搭建一个测试环境并跑通一个例子(相比之下,puppet可能需要30--60分钟)。 高性能:Salt使用大名鼎鼎的ZeroMQ作为通讯协议,性能极高。可以在数秒钟之内完成数据的传递 可伸缩:基于ZeroMQ通信,具备很强的扩展性;可以进行分级管理,能够管理分布在广域网的上万台服务器。 尽管twitter、豆瓣、oracle、等著名网站的运维团队都在使用puppet,但是我相信,他们切换到salt只是一个时间问题。毕竟不是所有的人都喜欢操纵傀儡(puppet),但是谁又能离开盐(salt)呢? 关于Salt和Puppet的对比,可以参考这里,或者看看中文版。

非常经典的solr教程

非常经典的solr教程,照着上面做完全能成功! duogemajia Solr 3.5 入门配置应用 机器上已安装: Tomcat 6.0 jdk1.7 mysql 5.0 1 访问https://www.360docs.net/doc/a16549527.html,/dyn/closer.cgi/lucene/solr , 在这个网址里选择一个路径, 下载solr 3.5 的版本 2 solr3.5 在本机解压缩以后, 把apache-solr-3.5.0\example\webapps 目录下 的solr.war 文件拷贝到Tomcat 6.0 的webapps 目录下 3 在Tomcat 6.0\webapps\solr 目录里新建一个文件夹conf 4 把solr3. 5 本机解压缩文件夹apache-solr-3.5.0\example 下的multicore 文件夹 考本到Tomcat 6.0\webapps\solr\conf 目录下 5 在Tomcat 6.0\conf\Catalina\localhost 目录下新建一个solr.xml 文件, 里面的内容如下 6 访问你的solr 项目localhost:8080/solr 会显示出两个core , solr 正常运行 7 配置分词, 使用的是mmseg4j 和搜狗词库, 下载地址: https://www.360docs.net/doc/a16549527.html,/p/mmseg4j/ , https://www.360docs.net/doc/a16549527.html,/p/mmseg4j/downloads/ detail?name=data.zip&can=2&q 8 把本地下载的mmseg4j 解压缩, 把里面的mmseg4j-all-1.8.5.jar 文件拷贝到Tomcat 6.0\webapps\solr\WEB-INF\lib 目录下 9 在Tomcat 6.0\webapps\solr 目录下新建一个dic 文件夹, 把新下载的词库拷贝到dic 目录下 10 在\Tomcat 6.0\webapps\solr\conf\multicore\core0\conf\schema.xml 文件的types 节点里添加如下节点:

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 服务组成

美团O2O的CRM系统架构设计教程文件

美团O2O的CRM系统架构设计 众所周知,O2O(Online To Offline),是指将线下的商务机会与互联网结合,让互联网成为线下交易的前台。但是O2O平台自身并不提供用户最终享受的商品、服务,这些服务都来自线下商户提供的服务,换句话说平台只是服务的搬运工。 线上风景固然靓丽,但是并不像看到的那样风光,就拿“团购”来讲,美团、点评、百度糯米的APP在功能布局、操作体验等方面差异化越来越小,这样极大的降低了用户使用门槛,作为理性逐利的C端用户来讲,最长见的结果谁便宜就会用谁。那么问题来了,如何在这场纷争中抓住用户,最终胜出呢? 对,线下能力! 线下的能力包括线下资源的控制能力和线下服务品质的控 制能力。线下能力最终决定了平台能够提供给线上用户的服务和服务品质,只有能够提供丰富、实惠、高品质的服务,来能够帮助平台在线上赢得用户,取得成功。美团之所以成功,就在于强大的地面、运营团队所建立起的线下能力。而这些团队背后所依赖的,就是我们称之为秘密武器的B端产品。CRM,就是其中之一。CRMCRM系统,立足于帮助美团解决线下资源控制的能力。CRM通过商家关系的建立和维系客户

关系,同时借助于新技术、和方法改进来提升工作效率,从而达成链接美团和商户的使命! 接下来我会从两大维度四个方面来介绍一下美团CRM的特点:合作篇 销售(建立合作)、运营(持续合作) 效能篇 信息之战(数据)、移动办公(场景支持)销售(建立合作)众所周知,在CRM系统中线索是非常重要的资源,提供丰富、有价值的线索是CRM系统的首要职责。在美团,线索对象通常指商家门店(POI),通过对门店关键人物(KP)的拜访和机会转化,最终为美团提供合作商家(可上单的商家)。 线索通过多种渠道获得: 网上数据爬取(初期) BD(业务拓展人员)采集 商家创建 众包采集 美团数据中心(MDC)将信息收集完成后,POI将会进入审核环节,未经校准的POI会经由人工(运营审核、众包采集)、机器审核进行校准、去重工作,通过反向拉取、消息队列通知等方式,线索数据最终会同步到CRM。 基于美团的大数据服务,在CRM中的POI数据将会被标记分类(300大商家、头部商家、竞对在线、券、多、免)和信息

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) 图(2) 图(3)

?高扩展的Java搜索服务器 ?基于Lucene搜索库 ?通过HTTP接收XML/JSON格式的文档(轻量级的"REST"形式) ?没有内建的索引蜘蛛,可以与Nutch等爬虫集成 ?使用Lucene文档解析器解析HTML, OpenOffice, Microsoft Word, Excel, PowerPoint, IMAP, RTF, PDF等格式的文件 ?不仅支持字段数据模式定义, 也支持Lucene 动态字段 ?自定义分词器(Tokenizer)、过滤器(Filter)、分析器(Analyzer)以便控制索引和查询进程

?除了支持富文本字段(rich text)和元数据(metadata)外,对数字和日期等进行了很好的区分 ?能合并多个文本字段为一个全文类型(full text)的字段,方便搜索(copy field) ?可以基于性能的考虑调节各种参数(option tuning) ?支持所有的Lucene查询语法,包括Internet查询操作符(+, -, "") ?各种自定义查询处理选项 ?能够跨越多个字段搜索 ?可配置同义词(synonym words)和过滤词(stop words)文本文件 ?支持拼写检查(spell check)器 ?支持高亮(high light)显示搜索结果中的匹配关键字 ?复杂、强大的结果排序选项 ?Faceted metadata搜索结果 ?能够动态分组搜索结果 ?可配置的缓存选项,加速查询响应速度 ?可为扩展性和容灾配置索引复制(replication),like mysql replication? ?基于web浏览器的管理接口,提供统计、报告、调试等 ?丰富的操作客户端:Client for Ruby, PHP,Java, Python等 How To Get Solr UP And Running? 实际上,得到Solr并且使其运行起来是件很容易的事。首先,从apache的官方网站上下载Solr 的Package。下载后解压zip(for windows)或者tar.gz(for linux),当前最新稳定版本为1.3.0。 Solr包结构图 打开example文件夹,如图:

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.360docs.net/doc/a16549527.html,/solr/ )下载Solr4.10.3,根据Solr的运行环境,Linux下需要下载lucene-4.10.3.tgz,windows下需要下载lucene-4.10.3.zip。 Solr使用指南可参考:https://https://www.360docs.net/doc/a16549527.html,/solr/FrontPage。

Nutch相关框架视频教程(Hadoop、Hbase、Lucene、Solr、Tika、Gora)(13-20讲)

第十三讲 1、改变负载 三台机器,改变负载 host2(NameNode、DataNode、TaskTracker) host6(SecondaryNameNode、DataNode、TaskTracker) host8(JobTracker 、DataNode、TaskTracker) 指定SecondaryNameNode为host6: vi conf/masters指定host6 scp conf/masters host6:/home/hadoop/hadoop-1.1.2/conf/masters scp conf/masters host8:/home/hadoop/hadoop-1.1.2/conf/masters vi conf/hdfs-site.xml dfs.http.address host2:50070 dfs.secondary.http.address host6:50090 scp conf/hdfs-site.xml host6:/home/hadoop/hadoop-1.1.2/conf/hdfs-site.xml scp conf/hdfs-site.xml host8:/home/hadoop/hadoop-1.1.2/conf/hdfs-site.xml 指定JobTracker为host8: vi conf/mapred-site.xml mapred.job.tracker host8:9001 scp conf/mapred-site.xml host6:/home/hadoop/hadoop-1.1.2/conf/mapred-site.xml scp conf/mapred-site.xml host8:/home/hadoop/hadoop-1.1.2/conf/mapred-site.xml vi conf/core-site.xml fs.checkpoint.dir /home/hadoop/dfs/filesystem/namesecondary scp conf/core-site.xml host6:/home/hadoop/hadoop-1.1.2/conf/core-site.xml

Solr文档

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

1.1单独使用Lucene实现 单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。 1.2使用Google或Baidu接口 通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依赖紧密,不方便扩展,不建议采用。 1.3使用Solr实现 基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为S olr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。 2什么是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不提供构建UI 的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

UG_OpenGrip语言经典教程

UG Open/Grip语言总结简明教程,Grip语言具备完整的语法规则、程序结构、内部函数、Grip程序必须经过编译、连接、生成可执行文件之后才能运行。利用Grip程序能够实现与UG的各种交互操作,例如几何体的创建、文件的管理、系统参数的控制、UG数据库的存取等。本文就为大家总结了Grip语言的语法,并附注释讲解。 $$ 注释 $$ Grip启动和编译:先找到UG的安装路径,如C:\Program Files\EDS\Unigraphics NX。 $$ 进入该路径下的UGOPEN目录,找到grade.bat文件,打开它,将环境变量base_dir $$ 设置成set base_dir=C:\Program Files\EDS\Unigraphics NX,保存并运行。 $$ Grip程序的编写和编译:在Grip的运行程序中,键入4,将你编写的Grip程序所在的目 $$ 录写入并回车。在Grip的运行程序中,键入1,写入新建Grip程序的文件名并回车,此时 $$ Grip会打开写字板,你可以在其中写入你的程序。在Grip的运行程序中,键入2,写入 $$ 所编译的文件名,编译无错后,键入3,写入所链接的文件名,链接无错后完成。 $$ 你所编写的Grip程序保存成*.grs文件,编译后Grip会生成*.gri文件,链接后Grip会 $$ 生成*.grx文件,此文件为Grip的运行文件。 $$ Grip程序的运行:打开UG,点击File->Execute->Grip,选择*.grx文件,就可运行它。 $$ 编译时应先编译子函数文件,生成*.gri,子函数文件不需要链接,此时再编译主函数 $$ 文件,生成*.gri,最后链接成*.grx。 $$ Grip主函数文件必须以HALT结束,Grip子函数文件必须以RETURN结束。 $$ 定义的变量不能超过6个字符,Grip会认为Point_1和Point_2是同一个变量。 $$ 一行不能超过80个字符,若超过,可用$符号来换行。 $$ Grip不区分大小写,也就是Grip会认为POINT和point都是画点函数,但是我建议Grip $$ 的函数名和关键字用大写,用户定义的变量用小写。但是用户定义的变量不能和Grip的 $$ 函数名和关键字重名。 $$ Grip的帮助文件在C:\EDS\Unigraphics NX\UGDOC\html_files\mainlibrary.chm\ $$ Open\GRIP Reference Guide下。一个简便的Grip函数查找方法:打开...\Word & $$ Symbol Lists\Major Word List,根据首字母来查函数。 HALT $$ 结束语 $$ 注释 ENTITY/p,l,c $$ 实体变量定义 NUMBER/i,f(5) $$ 数值变量定义 STRING/str(10) $$ 字符串变量定义 p=POINT/0,0,0 $$ 画点

solr集群搭建

solrcloud集群搭建 1什么是SolrCloud 1.1什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。 1.2SolrCloud结构 SolrCloud为了降低单机的处理压力,需要由多台服务器共同来完成索引和搜索任务。实现的思路是将索引数据进行Shard(分片)拆分,每个分片由多台的服务器共同完成,当一个索引或搜索请求过来时会分别从不同的Shard的服务器中操作索引。 SolrCloud需要Solr基于Zookeeper部署,Zookeeper是一个集群管理软件,由于SolrCloud 需要由多台服务器组成,由zookeeper来进行协调管理。 下图是一个SolrCloud应用的例子:

对上图进行图解,如下:

1.2.1物理结构 三个Solr实例(每个实例包括两个Core),组成一个SolrCloud。 1.2.2逻辑结构 索引集合包括两个Shard(shard1和shard2),shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard 上三个Core的索引数据一致,解决高可用问题。 用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。 1.2.2.1c ollection Collection在SolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个Shard(分片),它们使用相同的配置信息。 比如:针对商品信息搜索可以创建一个collection。 collection=shard1+shard2+....+shardX

SOLR中文教程

SOLR中文帮助文档 2010-10

目录 1概述 (4) 1.1企业搜索引擎方案选型 (4) 1.2Solr的特性 (4) 1.2.1Solr使用Lucene并且进行了扩展 (4) 1.2.2Schema(模式) (5) 1.2.3查询 (5) 1.2.4核心 (5) 1.2.5缓存 (5) 1.2.6复制 (6) 1.2.7管理接口 (6) 1.3Solr服务原理 (6) 1.3.1索引 (6) 1.3.2搜索 (7) 1.4源码结构 (8) 1.4.1目录结构说明 (8) 1.4.2Solr home说明 (9) 1.4.3solr的各包的说明 (10) 1.5版本说明 (11) 1.5.1 1.3版本 (11) 1.5.2 1.4版本 (12) 1.6分布式和复制Solr 架构 (12) 2Solr的安装与配置 (13) 2.1在Tomcat下Solr安装 (13) 2.1.1安装准备 (13) 2.1.2安装过程 (13) 2.1.3验证安装 (14) 2.2中文分词配置 (15) 2.2.1mmseg4j (15) 2.2.2paoding (19) 2.3多核(MultiCore)配置 (22) 2.3.1MultiCore的配置方法 (22) 2.3.2为何使用多core ? (23) 2.4配置文件说明 (23) 2.4.1schema.xml (24) 2.4.2solrconfig.xml (25) 3Solr的应用 (29) 3.1SOLR应用概述 (29) 3.1.1Solr的应用模式 (29) 3.1.2SOLR的使用过程说明 (30) 3.2一个简单的例子 (30) 3.2.1Solr Schema 设计 (30) 3.2.2构建索引 (30) 3.2.3搜索测试 (31) 3.3搜索引擎的规划设计 (32) 3.3.1定义业务模型 (32) 3.3.2定制索引服务 (34) 3.3.3定制搜索服务 (34) 3.4搜索引擎配置 (34) 3.4.1Solr Schema 设计(如何定制索引的结构?) (34)

GRIP简明教程

UG Open/Grip简明教程 $$ 注释 $$ Grip启动和编译:先找到UG的安装路径,如C:\Program Files\EDS\Unigraphics NX。 $$ 进入该路径下的UGOPEN目录,找到grade.bat文件,打开它,将环境变量base_dir $$ 设置成set base_dir=C:\Program Files\EDS\Unigraphics NX,保存并运行。$$ Grip程序的编写和编译:在Grip的运行程序中,键入4,将你编写的Grip程序所在的目 $$ 录写入并回车。在Grip的运行程序中,键入1,写入新建Grip程序的文件名并回车,此时 $$ Grip会打开写字板,你可以在其中写入你的程序。在Grip的运行程序中,键入2,写入 $$ 所编译的文件名,编译无错后,键入3,写入所链接的文件名,链接无错后完成。$$ 你所编写的Grip程序保存成*.grs文件,编译后Grip会生成*.gri文件,链接后Grip 会 $$ 生成*.grx文件,此文件为Grip的运行文件。 $$ Grip程序的运行:打开UG,点击File->Execute->Grip,选择*.grx文件,就可运行它。 $$ 编译时应先编译子函数文件,生成*.gri,子函数文件不需要链接,此时再编译主函数 $$ 文件,生成*.gri,最后链接成*.grx。 $$ Grip主函数文件必须以HALT结束,Grip子函数文件必须以RETURN结束。$$ 定义的变量不能超过6个字符,Grip会认为Point_1和Point_2是同一个变量。$$ 一行不能超过80个字符,若超过,可用$符号来换行。 $$ Grip不区分大小写,也就是Grip会认为POINT和point都是画点函数,但是我建议Grip

SOLR的应用教程

开源企业搜索引擎SOLR的 应用教程 2010-10

目录 1概述 (4) 1.1企业搜索引擎方案选型 (4) 1.2Solr的特性 (4) 1.2.1Solr使用Lucene并且进行了扩展 (4) 1.2.2Schema(模式) (5) 1.2.3查询 (5) 1.2.4核心 (5) 1.2.5缓存 (5) 1.2.6复制 (6) 1.2.7管理接口 (6) 1.3Solr服务原理 (6) 1.3.1索引 (6) 1.3.2搜索 (7) 1.4源码结构 (8) 1.4.1目录结构说明 (8) 1.4.2Solr home说明 (9) 1.4.3solr的各包的说明 (10) 1.5版本说明 (11) 1.5.1 1.3版本 (11) 1.5.2 1.4版本 (12) 1.6分布式和复制Solr 架构 (12) 2Solr的安装与配置 (13) 2.1在Tomcat下Solr安装 (13) 2.1.1安装准备 (13) 2.1.2安装过程 (13) 2.1.3验证安装 (14) 2.2中文分词配置 (15) 2.2.1mmseg4j (15) 2.2.2paoding (19) 2.3多核(MultiCore)配置 (22) 2.3.1MultiCore的配置方法 (22) 2.3.2为何使用多core ? (23) 2.4配置文件说明 (23) 2.4.1schema.xml (24) 2.4.2solrconfig.xml (25) 3Solr的应用 (29) 3.1SOLR应用概述 (29) 3.1.1Solr的应用模式 (29) 3.1.2SOLR的使用过程说明 (30) 3.2一个简单的例子 (30) 3.2.1Solr Schema 设计 (30) 3.2.2构建索引 (30) 3.2.3搜索测试 (31) 3.3搜索引擎的规划设计 (32) 3.3.1定义业务模型 (32) 3.3.2定制索引服务 (34) 3.3.3定制搜索服务 (34) 3.4搜索引擎配置 (34) 3.4.1Solr Schema 设计(如何定制索引的结构?) (34)

svn搭建

登录 | 注册 【拥抱变化 -- 知识改变命运】=== 知识,在实践行动中产生,在沟通交流中升华,在真诚分享中传播!=== 目录视图摘要视图订阅 7月推荐文章 【限时活动】建专辑得大奖 专访张路斌:从HTML5到Unity的游戏开发之路 当青春遇上互联网,能否点燃你的创业梦 推荐有礼--找出您心中的技术大牛 软件版本控制SVN服务器搭建 分类: 精品网络文章转载 2009-12-18 11:37 1974人阅读 评论(0) 收藏 举报 svn服务器subversion版本控制系统tortoisesvneclipse插件 什么是Subversion? Subversion 是一个自由/开源的版本控制系统。也就是说,在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。于是我们就可以籍此将数据回复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。 Subversion 的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量—如果出现不正确的更改,只要撤销那一次更改操作即可。 某些版本控制系统本身也是软件配置管理(SCM)系统,这种系统经过精巧的设计,专门用来管理源代码树,并且具备许多与软件开发有关的特性—比如,对编程语言的支持,或者提供程序构建工具。不过Subversion并不是这样的系统。它是一个通用系统,可以管理任何类型的文件集。对你来说,这些文件这可能是源程序—而对别人,则可能是一个货物清单或者是数字电影。 一、获取资源 (1)CollabNetSubversion-server-1.6.6-4.win32.exe SVN 服务器端 https://www.360docs.net/doc/a16549527.html,/ (2)TortoiseSVN-1.6.6.17493-win32-svn-1.6.6.msi SVN 的客户端 https://www.360docs.net/doc/a16549527.html,/ (3)LanguagePack_1.6.6.17493-win32-zh_CN.msi 中文简体的语言包 (能看英文的话就不用下) 服务器和程序下载 : https://www.360docs.net/doc/a16549527.html,/getting.html#binary-packages Windows常用客户端TortoiseSVN:https://www.360docs.net/doc/a16549527.html,/downloads AnkhSVN(Visual Studio插件):https://www.360docs.net/doc/a16549527.html,/ Subclipse(Eclipse插件):https://www.360docs.net/doc/a16549527.html,/ SCPlugin(Mac OS x客户端):https://www.360docs.net/doc/a16549527.html,/ 二、安装 上面的 1 、2 、3 均为直接安装即可,注意在安装完1再安装3的时候要重启一下,然后将4 解压到1 中安装目录下的 bin 目录中。至此安装完毕

相关主题
相关文档
最新文档