solr功能非常强大,可以建立各种数据的索引,常见的企业应用中,少不了数据库的索引的创建,可以通过写程序 可以将数据读出100条,如果你的内存够大,可以是1000条甚至更多,然后放入Collection中,批量提交至solr。或者读取数据写入xml文件中,再将该文件提交到solr等等。但是,solr也只带了数据库创建索引的功能,步骤如下:
一、通过solr自带的example
准备工作:
1、在apache官网下载 apache-solr-1.3.0.zip
2、下载mysql、hsql驱动(下面例子会用到)
环境描述:
1、tomcat版本 6.0.29 位置:D:tomcat6.0.29 设置环境变量:CATALINA_HOME=D:tomcat6.0.29
2、jdk1.5
步骤:
1、解压缩apache-solr-1.3.0.zip copy apache-solr-1.3.0examplesolr 文件夹到D:tomcat6.0.29,目录结构为D:tomcat6.0.29solr
2、copy apache-solr-1.3.0distapache-solr-common-1.3.0.jar 到D:tomcat6.0.29webapps,兵将apache-solr-common-1.3.0.jar 改为solr.jar,tomcat会自动解压缩该文件,生成solr文件夹,copy上面下载的mysql、hsql驱动包到D:tomcat6.0.29webappssolrWEB-INFlib下
3、copy apache-solr-1.3.0examplesolr里面内容到 D:tomcat6.0.29solr里面
4、删除D:tomcat6.0.29solrrss,修改D:tomcat6.0.29sorlsolr.xml 文件,去掉该行
5、copy apache-solr-1.3.0exampleexample-DIH 目录到D:tomcat6.0.29,解压缩hsqldb.zip到当前文件夹,改文件为hsql数据库文件
6、到此,完成,
运行测试:
开始-运行 cmd 进入命令行,切换目录到D:tomcat6.0.29,输入binstartup.bat,启动tomcat6,如果上面配置无误,可以查看tomcat日志看是否有错误,确定无错后,在浏览器输入http://127.0.0.1:8080/solr/db/dataimport?command=full-import,既可以看到输出
二、测试mysql数据库
环境和创建的文件夹延续上面的
步骤:
1、在D:tomcat6.0.29solr下创建mysqltest文件夹,copy D:tomcat6.0.29solrdb 里面的内容到D:tomcat6.0.29solrmysqltest
2、修改D:tomcat6.0.29solrsolr.xml文件内容为
3、修改D:tomcat6.0.29solrmysqltestconfdb-data-config.xml 内容为:
4、因为bookname、bookathor2个字段在D:tomcat6.0.29solrmysqltestconfschema.xml不存在,所以,要增加着2个field
注意:在该文件有
5、将D:tomcat6.0.29solrmysqltestconfsolrconfig.xml
中${solr.data.dir:./solr/mysqltest/data}
改为${solr.data.dir:./solr/db/data}
6、到此完成
运行测试:
开始-运行 cmd 进入命令行,切换目录到D:tomcat6.0.29,输入binstartup.bat,启动tomcat6,如果上面配置无误,可以查看tomcat日志看是否有错误,确定无错后,在浏览器输入http://127.0.0.1:8080/solr/mysqltest/dataimport?command=full-import,既可以看到输出。通过上面访问,就创建了数据库索引
可以访问http://127.0.0.1:8080/solr/mysqltest/admin/,在Query String: 输入id:搜索内容(格式为 要搜索的字段:搜索关键字)来测试是否已经将数据表中的数据建立了索引,也可以在该界面修改搜索的参数
最后在说说这个功能。上面的例子只不过是很简单的一个部分。针对solr的MultiCore,通过配置db-data-config.xml也可以实现,还有多表,或者多表关联等等操作只要在db-data-config.xml配置清楚都可以进行数据的导入。
在solr1.4中还有更多的扩展功能,这些功能为重建索引提供能很方便的操作。而且,datasource不单单指的是database,可以是xml文件,还可以是来自网络上的等等。