按tutorial搭建solr4.1.0环境

【实验目的】:在linux服务器上安装配置solr4.1.0版本环境. 完成效果:自带demo可以运行。(需要安装web环境,tomcat/jetty都行)
【参考】:http://lucene.apache.org/solr/4_1_0/tutorial.html
1:环境需要
1.1 java 1.6.0以上版本,查看版本,已安装

1.2 Solr release 4.1.0版本,到solr的官方网站进行下载

$ unzip –q solr-4.1.0.zip 进行解压contrib有一些功能模块是需要的jar包
dist是打包发布好的工程war包
docs是帮助文档
example是示例,里面有打包部署好的solr工程示例和servlet容器jetty。如果你没有tomcat可以直接使用Jetty服务器部署你的solr示例。
PS. 对于servlet容器容器,solr自带了jetty,而且官方网站的tutorial为简单起见也采用的是jetty,不过用tomcat的用户比较多,我们采用tomcat。

1.3 tomcat包安装
到tomcat的官网上http://tomcat.apache.org 下载当前最新版本(目前为7.0.37 Core:->tar.gz文件)
$ tar –zxvf apache-tomcat-7.0.37.tar.gz 进行解包

2:利用tomcat发布solr示例
2.1修改一些配置
a). 修改 /home/xujiaming/jacoxu20130222/apache-tomcat-7.0.37/conf/server.xml,修改第70行,加个 URIEncoding=”UTF-8″,把 8080 的那一块改为:

b). 把下面的内容保存到
/home/xujiaming/jacoxu20130222/apache-tomcat-7.0.37/conf/Catalina/localhost/solr.xml,没有这个目录自行创建。

2.2. 启动tomcat

在浏览器中输入http://localhost:8080/solr/admin/ 可查看界面如下:

而网上给出的界面都是如下的,有问题?
http://www.cnblogs.com/hoojo/archive/2011/10/21/2220431.html 应该是老版本的样式。

可以查看,新的版本界面就应该是如下样式,参http://javabigcat.iteye.com/blog/1782163

http://www.huqiwen.com/2012/12/03/solr4-tomcat-deploy-and-how-to-use-solrj/ 中给出更为详细的说明,以上是Solr管理控制台的主页,左边是导航。可以使用http://localhost:8080/solr/#/collection1/query进行查询结果的查看。这里提供的是一个方便示例界面。现在应该是没有数据的,因为没有向里面添加索引。可以使用solr提供的post.jar包进行简单的索引添加。这里不再介绍此方法,后面使用Solrj进行操作。具体的可以查看Solr目录下面的/docs/tutorial.html文档。

按照 http://www.huqiwen.com/2012/12/03/solr4-tomcat-deploy-and-how-to-use-solrj/ 中的修改步骤在Tomcat中重新部署Solr:
在Tomcat中部署Solr
上面的运行是Solr默认绑定的一个jetty,如果需要在tomcat中运行solr,方法如下:
1)、将Solr/dist/apache-solr-4.0.0.war此war包复制到tomcat的webapps目录下面,并重命名成solr。
2)、点击tomcat/bin/startup.bat运行tomcat,这时tomcat会解压solr.war包到webapps目录下面。看到控制台里面会有报错提示,是找不到solr的实例运行环境。这时关闭tomcat。
3)、删除webapps目录下面的solr.war包。将下载的solr目录下面的example下面的solr目录复制到tomcat的webapps/solr下面。下面的目录结构大概是这样的webapps/solr/solr/collection1类似这样的。
4)、打开webapps/solr/WEB-INF/web.xml文件,在里面添加如下内容。env-entry-value这个目录是指向上一个步骤中的目录。这里使用的是相对目录(相对于tomcat的bin目录),也可以使用绝对路径,如d:/solr等。步骤3中的目录不一定要位于tomcat中,只要此步骤中将路径配置正确即可。

solr/home
../webapps/solr/solr
java.lang.String

5)、再次运行tomcat,输入http://localhost:8080/solr即可访问在tomcat中运行的solr环境。
显示效果一样,这5步的部署操作应该是无关紧要的。

3:建立索引文件,导入数据
3.1 进入exampledoc目录下,即存放数据文件的目录中,利用post.jar建立数据索引。
按照tutorial中的demo,打开超级终端,进入目录,输入指令:
$ java –jar post.jar solr.xml monitor.xml
导入有误,发现默认地址是针对jetty的,因而需要重新设定地址8080,针对tomcat。

进入UI界面中,可以看到Doc的数目已改为2了。

但这时出现问题,没有查出任何信息,注意Num Docs的数目可能要比XML的文件数目多,因为有的XML文件可能包含多个

暂且不知道问题出在哪里,。。。。。重新解压solr,利用默认的jetty web服务,不修改任何配置试一下。

4:按照官网tutorial中采用jetty默认配置。http://lucene.apache.org/solr/4_1_0/tutorial.html

启动了jetty之后,开启一个新的终端对数据文档进行索引操作
注:tomcat配置好之后,每次都是默认开启的;而jetty是需要手动启动的。
发现在这个网址中http://localhost:8983/solr/collection1/select?q=solr&wt=xml 是可以看到返回的结果的。输入http://localhost:8080/solr/collection1/select?q=solr&wt=xml 也可看到结果,额。。这个是通过jetty生成的,还是tomcat生成的,关闭jetty。重新执行tomcat中的query查询,可以生成结果。说明tomcat也是正常运行的。
注意../solr/#/collection1/.. 是无法显示xml文件的内容的。
下面该如何解析这个文件result文件呢?而且如何把数据建立成xml元数据呢?

查询语法规则可查看 http://wiki.apache.org/solr/SolrQuerySyntax
把exampledoc中的所有xml数据文档建立索引之后可以尝试查看
• video
• name:video
• +video +price:[* TO 400]
这几项之间的不同.

5:删除索引数据文档
例如要在一个name域中有DDR的数据索引文档全部删除,可采用query模式进行删除操作,如:
java -Dcommit=false -Ddata=args -jar post.jar “name:DDR”
注:此时索引文档是没有变化的,如,可搜索当前name中包含DDR的文件,结果为:

此时我们需要执行一个空的post指令来更新searcher:
java –jar post.jar –
再重新检索name中包含DDR的文件,结果为0:

下面这句也是比较常用的删除指令:
java -Ddata=args -Dcommit=false -jar post.jar “SP2514N”
更新searcher之后会发现Num Doc的数目减少,而Max Doc的数目没有变:

为继续按照tutorial中的指南进行,重新加载所有的XML文件:
java -jar post.jar *.xml
注:添加索引不需要强制更新seacher。

6:接下来可以通过fl来控制返回的参数,例:

http://localhost:8983/solr/collection1/select/?indent=on&q=video&fl=name,id

各种查询语句:
q=video&fl=name,id (return only name and id fields)
q=video&fl=name,id,score (return relevancy score as well)
q=video&fl=*,score (return all stored fields, as well as relevancy score)
q=video&sort=price desc&fl=name,id,price (add sort specification: sort by price descending)
q=video&wt=json (return response in JSON format)

利用hl(highlighting)可以对一些词进行强调,用标签(for emphasis)来标记
Faceted search用起来也很方便,见tutorial

7:检索用户界面
http://localhost:8983/solr/collection1/browse 用户界面显示了对索引文档进行整理统计,方便用户直接在界面进行数据检索

8:文本分析
文本域的典型索引一般都是把文本拆成词并进行多种变换,如:转换为小写、去除复数等。
如果检索的数据文件是english,那么可以修改schame.xml

field name=”features” type=”text_en_splitting” indexed=”true” stored=”true” multiValued=”true”/>

这样能够针对英文进行一些特殊的处理,例如:
利用WordDelimiterFilter 和LowerCaseFilter 进行如下处理:power-shot和PowerShot匹配, adata和A-DATA匹配;
利用PorterStemFilter 的stemming features 搜索特征;
利用SynonymFilter 可以对英文错拼或同义替换进行处理,如”1 gigabyte” 匹配1GB, 拼错的单词pixima能够匹配Pixma。

Text_en 英文 text_cjk 中日韩文 text_ja 日文 text_ar 阿拉伯文
备注:solr查询参数描述:
参数 描述 示例
q Solr 中用来搜索的查询。有关该语法的完整描述,请参阅 参考资料。可以通过追加一个分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。默认的排序是 score desc,指按记分降序排序。 q=myField:Java AND otherField:developerWorks; date asc
此查询搜索指定的两个字段,并根据一个日期字段对结果进行排序。
start 将初始偏移量指定到结果集中。可用于对结果进行分页。默认值为 0。 start=15
返回从第 15 个结果开始的结果。
rows 返回文档的最大数目。默认值为 10。 rows=25,返回25个结果集
fq 提供一个可选的筛选器查询。查询结果被限制为仅搜索筛选器查询返回的结果。筛选过的查询由 Solr 进行缓存。它们对提高复杂查询的速度非常有用。 任何可以用 q 参数传递的有效查询,排序信息除外。
hl 当 hl=true 时,在查询响应中醒目显示片段。默认为 false。参看醒目显示参数(见 参考资料)。 hl=true
fl 作为逗号分隔的列表指定文档结果中应返回的 Field 集。默认为 “*”,指所有的字段。“score” 指还应返回记分。 *,score
sort 排序,对查询结果进行排序,参考
sort=date asc,price desc

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>