solr入门指南.docx
《solr入门指南.docx》由会员分享,可在线阅读,更多相关《solr入门指南.docx(12页珍藏版)》请在冰豆网上搜索。
![solr入门指南.docx](https://file1.bdocx.com/fileroot1/2023-1/26/d769db80-caaf-425f-8603-fecef85962f1/d769db80-caaf-425f-8603-fecef85962f11.gif)
solr入门指南
企业级搜索引擎Solr使用入门指南
http:
//wiki.apache.org/solr/FrontPage
本文转自
由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有集中方案可供选择:
1.基于Lucene自己进行封装实现站内搜索。
工作量及扩展性都较大,不采用。
2.调用Google、Baidu的API实现站内搜索。
同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,暂时不采用。
3.基于Compass+Lucene实现站内搜索。
适合于对数据库驱动的应用数据进行索引,尤其是替代传统的like‘%expression%’来实现对varchar或clob等字段的索引,对于实现站内搜索是一种值得采纳的方案。
但在分布式处理、接口封装上尚需要自己进行一定程度的封装,暂时不采用。
4.基于Solr实现站内搜索。
封装及扩展性较好,提供了较为完备的解决方案,因此在门户社区中采用此方案,后期加入Compass方案。
1、Solr简介
Solr是一个基于Lucene的Java搜索引擎服务器。
Solr提供了层面搜索、命中醒目显示并且支持多种输出格式(包括XML/XSLT和JSON格式)。
它易于安装和配置,而且附带了一个基于HTTP的管理界面。
Solr已经在众多大型的网站中使用,较为成熟和稳定。
Solr包装并扩展了Lucene,所以Solr的基本上沿用了Lucene的相关术语。
更重要的是,Solr创建的索引与Lucene搜索引擎库完全兼容。
通过对Solr进行适当的配置,某些情况下可能需要进行编码,Solr可以阅读和使用构建到其他Lucene应用程序中的索引。
此外,很多Lucene工具(如Nutch、Luke)也可以使用Solr创建的索引。
2、Tomcat下Solr安装配置
由于Solr基于java开发,因此Solr在windows及Linux都能较好部署使用,但由于Solr提供了一些用于测试及管理、维护较为方便的shell脚本,因此在生产部署时候建议安装在Linux上,测试时候可以在windows使用。
下面以Linux下安装配置Solr进行说明,windows与此类似。
wget
unzipapache-tomcat-6.0.16.zip
mvapache-tomcat-6.0.16/opt/tomcat
chmod755/opt/tomcat/bin/*
wget
tarzxvfapache-solr-1.2.0.tgz
Solr的安装配置最为麻烦的是对solr.solr.home的理解和配置,主要有三种
基于当前路径的方式
cpapache-solr-1.2.0/dist/apache-solr-1.2.0.war/opt/tomcat/webapps/solr.war
mkdir/opt/solr-tomcat
cp-rapache-solr-1.2.0/example/solr//opt/solr-tomcat/
cd/opt/solr-tomcat
/opt/tomcat/bin/startup.sh
由于在此种情况下(没有设定solr.solr.home环境变量或JNDI的情况下),Solr查找./solr,因此在启动时候需要切换到/opt/solr-tomcat
基于环境变量solr.solr.home
在当前用户的环境变量中(.bash_profile)或在/opt/tomcat/catalina.sh中添加如下环境变量
exportJAVA_OPTS="$JAVA_OPTS-Dsolr.solr.home=/opt/solr-tomcat/solr"
基于JNDI配置
mkdir–p/opt/tomcat/conf/Catalina/localhost
touch/opt/tomcat/conf/Catalina/localhost/solr.xml,内容如下:
Xml代码
1.
2.
3.
访问solr管理界面http:
//ip:
port/solr
3、Solr原理
Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。
在Solr中,用户通过向部署在servlet容器中的SolrWeb应用程序发送HTTP请求来启动索引和搜索。
Solr接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。
通过HTTP以同样的方式返回响应。
默认配置返回Solr的标准XML响应,也可以配置Solr的备用响应格式。
可以向Solr索引servlet传递四个不同的索引请求:
add/update允许向Solr添加文档或更新文档。
直到提交后才能搜索到这些添加和更新。
commit告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。
optimize重构Lucene的文件以改进搜索性能。
索引完成后执行一下优化通常比较好。
如果更新比较频繁,则应该在使用率较低的时候安排优化。
一个索引无需优化也可以正常地运行。
优化是一个耗时较多的过程。
delete可以通过id或查询来指定。
按id删除将删除具有指定id的文档;按查询删除将删除查询返回的所有文档。
一个典型的Add请求报文
Xml代码
1.
2.
3. TWINX2048-3200PRO
4. CORSAIR XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail
5. Corsair Microsystems Inc.
6. electronics
7. memory
8. CAS latency 2, 2-3-3-6 timing, 2.75v, unbuffered, heat-spreader
9. 185
10. 5
11. true
12.
13.
14. VS1GB400C3
15. CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail
16. Corsair Microsystems Inc.
17. electronics
18. memory
19. 74.99
20. 7
21. true
22.
23.
TWINX2048-3200PRO
CORSAIRXMS2GB(2x1GB)184-PinDDRSDRAMUnbufferedDDR400(PC3200)DualChannelKitSystemMemory-Retail
CorsairMicrosystemsInc.
electronics
memory
CASlatency2,2-3-3-6timing,2.75v,unbuffered,heat-spreader
185
5
true
VS1GB400C3
CORSAIRValueSelect1GB184-PinDDRSDRAMUnbufferedDDR400(PC3200)SystemMemory-Retail
CorsairMicrosystemsInc.
electronics
memory
74.99
7
true
一个典型的搜索结果报文:
Xml代码
1.
2.
3. 0
4. 6
5.
6. 10
7. 0
8. *,score
9. true
10. content:
"faceted browsing"
11.
12.
13.
14.
15.
16. 1.058217
17.
18. http:
//localhost/myBlog/solr-rocks-again.html
19. Solr is Great
20. solr,lucene,enterprise,search,greatness
21. Solr has some really great features, like faceted browsing and replication
22.
23.
24. Solr has some really great features, like faceted browsing and replication
25.
26. 2007-01-07T05:
04:
00.000Z
27.
28. solr,lucene,enterprise,search,greatness
29.
30. 8
31. Solr is Great
32. http:
//localhost/myBlog/solr-rocks-again.html
33.
34.
35.
36.
37. //localhost/myBlog/solr-rocks-again.html">
38.
39. Solr has some really great features, like faceted
40. browsing and replication
41.
42.
43.
44.
0
6
10
0
*,score
true
content:
"facetedbrowsing"
1.058217
http:
//localhost/myBlog/solr-rocks-again.html
SolrisGreat
solr,lucene,enterprise,search,greatness
Solrhassomereallygreatfeatures,likefacetedbrowsingandreplication
Solrhassomereallygreatfeatures,likefacetedbrowsingandreplication
2007-01-07T05:
04:
00.000Z
solr,lucene,enterprise,search,greatness
8
SolrisGreat
http:
//localhost/myBlog/solr-rocks-again.html
//localhost/myBlog/solr-rocks-again.html">
Solrhassomereallygreatfeatures,likefaceted
browsingandreplication
关于solr的详细使用说明,请参考
http:
//wiki.apache.org/solr/FrontPage
4、Solr测试使用
Solr的安装包包含了相关的测试样例,路径在apache-solr-1.2.0/example/exampledocs
1.使用shell脚本(curl)测试Solr的操作:
cdapache-solr-1.2.0/example/exampledocs
vipost.sh,根据tomcat的ip、port修改URL变量的值URL=http:
//localhost:
8080/solr/update
./post.sh*.xml #
2.使用Solr的java包测试Solr的操作:
查看帮助:
java-jarpost.jar–help
提交测试数据:
java-Durl=http:
//localhost:
8080/solr/update-Ddata=files-jarpost.jar *.xml
下面以增加索引字段liangchuan、url为例,说明一下Solr中索引命令的使用
1)修改solr的schema,配置需要索引字段的说明:
vi/opt/solr-tomcat/solr/conf/schema.xml,在中增加如下内容
Xml代码
1.
2.
2)创建增加索引请求的xml测试文件
touch/root/apache-solr-1.2.0/example/exampledocs/liangchuan.xml,内容如下:
Xml代码
1.
2.
3. liangchuan000
4. Solr, the Enterprise Search Server
5. Apache Software Foundation
6. liangchuan's solr