Solr简介说起Apache Lucene,可以说无人不知,无人不晓,但是说道ApacheSolr,恐怕知道的不多。
看看Apache Solr的说明:Solr是一个基于Lucenejava库的企业级搜索服务器,包含XML/HTTP,JSONAPI,高亮查询结果,缓存,复制还有一个WEB管理界面。
Solr运行在Servlet容器中。所以Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,
而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。
一句话概括Solr:Solr是Lucene面向企业搜索应用的扩展
Windows xp系统下:
1、将apache-solr-3.5.0.rar解压到path(E:\Workspaces)下.
2、cd path\apache-solr-3.5.0\example
3、java -jar stat.jar
4、http://localhost:8983/solr
配置
Solr 的配置是位于 path\apache-solr-3.5.0\example/solr/conf 中得 schema.xml.
添加field,其中desc和date_add为rocky.xml中的field name
<!--begin-->
<field name="desc" type="text_general" indexed="true" stored="true" />
<field name="date_add" type="text_general" indexed="true" stored="true" />
<!--end-->
Solr配置说明
http://martin3000.iteye.com/blog/1328514
5、建立索引
由于solr 提供了HTTP 的访问接口 所以在建立索引的时候 我们可以通过HTTP POST 的方式进行索引的建立,
当然solr 也有一个 post.jar 可以方便的让我们来进行索引的建立。 举例说明 一个rocky.xml 文档
<add>
<doc>
<field name="id">1001</field>
<field name="name">Rocky Article</field>
<field name="desc">Rocky is a very good Guy, and we do a wonderful work.</field>
<field name="date_add">2006-01-17T00:00:00.000Z</field>
</doc>
<doc>
<field name="id">1002</field>
<field name="name">Zach Article</field>
<field name="desc">Zach is a vest Guy, test.</field>
<field name="date_add">2006-01-17T00:00:00.000Z</field>
</doc>
</add>
然后将这个xml 文档post 到 solr 进行索引的建立
如果有中文<?xml version="1.0" encoding="gb2312"?>
path\apache-solr-3.5.0\example\exampledocs>java -jar post.jar rocky.xml
(tomcat中:path\apache-solr-3.5.0\example\exampledocs>java -Durl=http://localhost:
8080/solr/update -Dcommit=yes -jar post.jar rocky.xml)
删除索引:
java -Ddata=args -jar post.jar "id:1001″
6、搜索
进入http://localhost:8983/solr/admin/form.jsp 进行高级搜索
因为solr 搜索核心采用的是 java Lucene 所以搜索的语法 和 Lucene 一样 这里我只举例一些简单的搜索方式 复杂的搜索方式可以访问
http://lucene.apache.org/java/2_9_1/queryparsersyntax.html
以rocky.xml 为案例 如果搜索内容为:
1. Rocky
这说明对默认字段进行搜索 相当于 desc:Rocky
2. name:rocky desc:rocky
对俩个字段进行搜索, 相当于 name:rocky OR desc:rocky
3. name:rocky AND desc:rocky
表明俩个字段都必须含有 rocky 才行
二、
solr 安装到 tomcat。修改 tomcat\conf\server.xml,加个 URIEncoding="UTF-8",把 8080 的那一块改为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
<Context docBase="apache-solr-3.5.0/example/webapps/solr.war" reloadable="true" >
<Environment name="solr/home" type="java.lang.String" value="E:/apache-solr-3.5.0/example/solr" override="true" />
</Context>
索引文件(默认)会在 solr/data/index 目录下,要改为 solr.home/data目录下,在 solr\conf\solrconfig.xml 把 dataDir 注释掉,如:
<!--
<dataDir>${solr.data.dir:./solr/data}</dataDir>
-->
三、
异常处理
org.apache.solr.common.SolrException: Error loading class 'solr.VelocityResponseWriter'
找到solr\conf\solrconfig.xml,把中间
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" enable="${solr.velocity.enabled:true}"/>注释或者disabled即可。
四、中文分词
paoding svn:http://paoding.googlecode.com/svn/trunk/paoding-analysis
cd E:\paoding-analysis
ant build生成paoding-analysis.jar
把paoding-analysis中的dic文件夹考到solr的home文件夹中(将paoding-dic-home.properties改为paoding.dic.home=E:/solr/solr/dic)
解压paoding-analysis.jar,找到文件paoding-dic-home.properties,更改属性如下:
paoding.dic.home=E:/solr/solr/dic(D:/solr/solr为solr的home目录
更改schema.xml为使用paoding分词器
paoding:http://www.zhuoda.org/xiezhi/119187.html
好像schema.xml中<analyzer class="net.paoding.analysis.analyzer.PaodingAnalyzer"></analyzer> 不添加 positionIncrementGap 属性会报错。
在http://localhost:8080/solr/admin/analysis.jsp下测试分词
http://martinyuan.iteye.com/blog/441743
看看Apache Solr的说明:Solr是一个基于Lucenejava库的企业级搜索服务器,包含XML/HTTP,JSONAPI,高亮查询结果,缓存,复制还有一个WEB管理界面。
Solr运行在Servlet容器中。所以Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,
而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。
一句话概括Solr:Solr是Lucene面向企业搜索应用的扩展
Windows xp系统下:
1、将apache-solr-3.5.0.rar解压到path(E:\Workspaces)下.
2、cd path\apache-solr-3.5.0\example
3、java -jar stat.jar
4、http://localhost:8983/solr
配置
Solr 的配置是位于 path\apache-solr-3.5.0\example/solr/conf 中得 schema.xml.
添加field,其中desc和date_add为rocky.xml中的field name
<!--begin-->
<field name="desc" type="text_general" indexed="true" stored="true" />
<field name="date_add" type="text_general" indexed="true" stored="true" />
<!--end-->
Solr配置说明
http://martin3000.iteye.com/blog/1328514
5、建立索引
由于solr 提供了HTTP 的访问接口 所以在建立索引的时候 我们可以通过HTTP POST 的方式进行索引的建立,
当然solr 也有一个 post.jar 可以方便的让我们来进行索引的建立。 举例说明 一个rocky.xml 文档
<add>
<doc>
<field name="id">1001</field>
<field name="name">Rocky Article</field>
<field name="desc">Rocky is a very good Guy, and we do a wonderful work.</field>
<field name="date_add">2006-01-17T00:00:00.000Z</field>
</doc>
<doc>
<field name="id">1002</field>
<field name="name">Zach Article</field>
<field name="desc">Zach is a vest Guy, test.</field>
<field name="date_add">2006-01-17T00:00:00.000Z</field>
</doc>
</add>
然后将这个xml 文档post 到 solr 进行索引的建立
如果有中文<?xml version="1.0" encoding="gb2312"?>
path\apache-solr-3.5.0\example\exampledocs>java -jar post.jar rocky.xml
(tomcat中:path\apache-solr-3.5.0\example\exampledocs>java -Durl=http://localhost:
8080/solr/update -Dcommit=yes -jar post.jar rocky.xml)
删除索引:
java -Ddata=args -jar post.jar "id:1001″
6、搜索
进入http://localhost:8983/solr/admin/form.jsp 进行高级搜索
因为solr 搜索核心采用的是 java Lucene 所以搜索的语法 和 Lucene 一样 这里我只举例一些简单的搜索方式 复杂的搜索方式可以访问
http://lucene.apache.org/java/2_9_1/queryparsersyntax.html
以rocky.xml 为案例 如果搜索内容为:
1. Rocky
这说明对默认字段进行搜索 相当于 desc:Rocky
2. name:rocky desc:rocky
对俩个字段进行搜索, 相当于 name:rocky OR desc:rocky
3. name:rocky AND desc:rocky
表明俩个字段都必须含有 rocky 才行
二、
solr 安装到 tomcat。修改 tomcat\conf\server.xml,加个 URIEncoding="UTF-8",把 8080 的那一块改为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
若不设置,中文查询会出现乱码
<Context docBase="apache-solr-3.5.0/example/webapps/solr.war" reloadable="true" >
<Environment name="solr/home" type="java.lang.String" value="E:/apache-solr-3.5.0/example/solr" override="true" />
</Context>
索引文件(默认)会在 solr/data/index 目录下,要改为 solr.home/data目录下,在 solr\conf\solrconfig.xml 把 dataDir 注释掉,如:
<!--
<dataDir>${solr.data.dir:./solr/data}</dataDir>
-->
三、
异常处理
org.apache.solr.common.SolrException: Error loading class 'solr.VelocityResponseWriter'
找到solr\conf\solrconfig.xml,把中间
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" enable="${solr.velocity.enabled:true}"/>注释或者disabled即可。
四、中文分词
paoding svn:http://paoding.googlecode.com/svn/trunk/paoding-analysis
cd E:\paoding-analysis
ant build生成paoding-analysis.jar
把paoding-analysis中的dic文件夹考到solr的home文件夹中(将paoding-dic-home.properties改为paoding.dic.home=E:/solr/solr/dic)
解压paoding-analysis.jar,找到文件paoding-dic-home.properties,更改属性如下:
paoding.dic.home=E:/solr/solr/dic(D:/solr/solr为solr的home目录
更改schema.xml为使用paoding分词器
paoding:http://www.zhuoda.org/xiezhi/119187.html
好像schema.xml中<analyzer class="net.paoding.analysis.analyzer.PaodingAnalyzer"></analyzer> 不添加 positionIncrementGap 属性会报错。
在http://localhost:8080/solr/admin/analysis.jsp下测试分词
http://martinyuan.iteye.com/blog/441743