前些日子做了个 apache solr 应用的入门介绍,也在博客记录下,方便新手看看。以搜索论坛帖子为示例。
1、先下载 Apache Solr 1.3 http://apache.etoak.com/lucene/solr/1.3.0/apache-solr-1.3.0.zip,解压到如 E:\apache-solr-1.3.0。
2、下载 Apache Tomcat 6.0.18 http://labs.xiaonei.com/apache-mirror/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.zip,解压到如 E:\apache-tomcat-6.0.18。
3、solr 安装到 tomcat。修改 E:\apache-tomcat-6.0.18\conf\server.xml,加个 URIEncoding="UTF-8",把 8080 的那一块改为:
把下面的内容保存到 E:\apache-tomcat-6.0.18\conf\Catalina\localhost\solr.xml,没有这个目录自行创建。
solr 的更多方式请看:solr install
4、现在安装好,启动 tomcat,并打开 http://localhost:8080/solr/admin/ 看看界面。
5、为搜索论坛帖子应用设计索引结构:
6、上面的索引结构告诉 solr,把下面的内容覆盖 E:\apache-solr-1.3.0\example\solr\conf\scheam.xml,(可以先备份这文件,方便以后看官方示例):
7、重启 tomcat,然后手动在 E:\apache-solr-1.3.0\example\exampledocs 创建两个 xml 数据文件。分别保存为 demo-doc1.xml 和 demo-doc2.xml:
8、提交数据做索引,到 E:\apache-solr-1.3.0\example\exampledocs,运行:
E:\apache-solr-1.3.0\example\exampledocs>java -Durl=http://localhost:8080/solr/update -Dcommit=yes -jar post.jar demo-doc*.xml SimplePostTool: version 1.2 SimplePostTool: WARNING: Make sure your XML documents are encoded in UTF-8, other encodings are not currently supported SimplePostTool: POSTing files to http://localhost:8080/solr/update.. SimplePostTool: POSTing file demo-doc1.xml SimplePostTool: POSTing file demo-doc2.xml SimplePostTool: COMMITting Solr index changes..
9、查看搜索结果:
所有内容 http://localhost:8080/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on
bory.chan 用户的:http://localhost:8080/solr/select/?q=user%3Abory.chan&version=2.2&start=0&rows=10&indent=on
时间 http://localhost:8080/solr/select/?q=timestamp%3A%5B%222009-02-18T00%3A00%3A00Z%22+TO+%222009-02-19T00%3A00%3A00Z%22%5D&version=2.2&start=0&rows=10&indent=on
常用的 solr 查询参数请看:solr 查询参数说明
简单的示例已经完成了,索引文件(默认)会在 CWD/solr/data/index 目录下,要改为 solr.home/data目录下,在 F:\apache-solr-1.3.0\example\solr\conf\solrconfig.xml 把 dataDir 注释掉,如:
<!-- <dataDir>${solr.data.dir:./solr/data}</dataDir> -->
说明:上面没有使用中文分词,用官方的 CJK 分词,另外有 mmseg4j 中文分词的示例,请看:solr 中文分词 mmseg4j 使用例子
看了很长时间你的博客了,中文的SOLR资料太少了。
下载了MM,用JAVA -JAR的方式运行分词没有问题。
但在UBUNTU 9.10,JETTY方式下,不会安装MM....
这个步骤总是语焉不详。
系统提示无法加载COM.CHENLB.COM.MM......................
我把所有的JAR包都放在CMD/EXAMPLE/LIB下面了。JETTY可以看见这些JAR文件,但总是说无法加载。
1.6.2,好多个JAR包,我不知道该怎么放,只好把全部的JAR包都解压到同一个目录下了。
回复
chenlb 回复: on June 2nd, 2009@15:09
solr 1.3 新的加载 lib 方式, 把 mmseg4j 相关的 *.jar 放到 solr.home/lib 目录下,solr 会正确加载。
chenlb 回复: on June 2nd, 2009@15:14
如果是 solr 1.3 就可以只要 mmseg4j-all-1.6.2.jar 放到 solr.home/lib 就行了。
多谢你的快速回复,但是发觉还是不行。
我是用JETTY哪个测试用的容器做得。
apache-solr-1.3.0/lib
apache-solr-1.3.0/example/lib
这两个LIB我都放上了MMSEG和DATA文件,使用默认的目录树,这回变成报错无法启动SOLR。。。
我再调调吧,新手的痛苦。
另外我看到一篇帖子是讲默认的CJK的,那个倒是很好配置。以下引用我找到的一个配置实例,因为你的配置文件我配好后分词无法运行。他还提到某个报错,死马当火马医吧。
==============================
默认情况下 Apache Solr 是不支持中文检索的,如果文档中包含中文,必须用完整的一句中文才能检索出内容。下面以 Apache Solr 的演示程序为例,注意:粗体部分是需要修改的地方。找到如下三行:
修改为:
找到如下两行:
修改完毕,重新运行 Apache Solr 就可以对中文进行检索了,原先已经导入的文档需要重新导入。记住原先的配置中有个 positionIncrementGap="100" 一定要删除了,否则会有异常。
chenlb 回复: on June 2nd, 2009@16:04
F:\apache-solr-1.3.0\example\solr 作为 solr.home 的话
是 F:\apache-solr-1.3.0\example\solr\lib, 没有这个目录的,自己创建,不是放到
如果 直接用 <analyzer class="com.chenlb.mmseg4j.analysis.MMSegAnalyzer" /> (也即是说 用 Analyzer 类的话),positionIncrementGap="100" 是一定要删除,
chenlb 回复: on June 2nd, 2009@16:06
这里: http://blog.chenlb.com/2009/04/solr-chinese-segment-mmseg4j-use-demo.html
哈哈,非常感谢,搞定了。确实是不理解什么是SOLR.HOME这个东西。竟然在这里卡了半天时间。。。
调试通过了,分词正确。
再次感谢,准备在企业环境下部署SOLR。
中文这下子不怕了。
又来讨饶作者了,想问一下,据您所知
现有的、正在使用中的最大的词库,大概有多大?
我现在加载了一个50W的医学名词词库~~速度有些慢了。当然和测试用机器不好可能也有关系。
发觉词库是中文搜索的最大的关键点。
chenlb 回复: on June 3rd, 2009@15:50
不是专业/业行词库 22W
posted on 2009-09-18 20:44 cy163 阅读(3450) 评论(2) 编辑 收藏