solr配置及数据库及文档解析.docx
《solr配置及数据库及文档解析.docx》由会员分享,可在线阅读,更多相关《solr配置及数据库及文档解析.docx(15页珍藏版)》请在冰豆网上搜索。
solr配置及数据库及文档解析
一、准备数据
1.去官网下载最新的solr。
当前最新为4.5版本。
2.准备tomcat7.(下载tomcat7)
二、配置solr。
1.将下载的solr4.5解压得到:
2.将 example\solr-webapp下的solr.war放到tomcat的webapp下。
3.启动tomcat此时报错,solr.war解压关闭tomcat删除solr.war
4.得到solr项目
5.配置solr_home :
将下载的solr包中解压的example/solr文件夹copy到d:
/solr/solr_home(路径可以任意修改)。
6.打开tomcat下的webapp\solr\WEB-INF下的web.xml,修改添加如下代码:
solr/home
D:
/solr/solr_home
java.lang.String
7.其中 中的值即为第5步中配置的路径。
8.copy下载包中的example\lib\ext下的jar包全部放到tomcat的lib目录下。
9设置solr/collection/conf/中的solrconfig.xml 中jar包路径,将路径该对就可以了。
10.将C:
\app\solr-4.5.0\solr-4.5.0\example\resources下的log4j.properties拷贝到C:
\ProgramFiles\ApacheSoftwareFoundation\Tomcat7.0\webapps\solr\WEB-INF\classes下。
11.启动tomcat。
访问看到以下页面说明部署成功。
solr本身对中文分词的处理不是太好,所以中文应用很多时候都需要额外加一个中文分词器对中文进行分词处理,ik-analyzer就是其中一个不错的中文分词器。
一、版本信息
solr版本:
4.7.0
需要ik-analyzer版本:
IKAnalyzer2012FF_hf1
ik-analyzer下载地址:
二、配置步骤
下载压缩解压后得到如下目录结构的文件夹:
我们把IKAnalyzer2012FF_u1.jar拷贝到solr服务的solr\WEB-INF\lib下面。
我们把IKAnalyzer.cfg.xml、stopword.dic拷贝到需要使用分词器的core的conf下面,和core的schema.xml文件一个目录。
修改core的schema.xml,在配置项间加一段如下配置:
[html] viewplaincopy
1.
2.
3.
我们就多了一种text_ik的field类型了,该类型使用的分词器就是ik-analyzer。
我们在这个core的schema.xml里面配置field类型的时候就可以使用text_ik了。
[html] viewplaincopy
1.
三、中文分词测试
[html] viewplaincopy
1.IKT
2.
3.text
4.raw_bytes
5.start
6.end
7.type
8.position
9.
10.中华人民共和国
11.[e4 b8 ad e5 8d 8e e4 ba ba e6 b0 91 e5 85 b1 e5 92 8c e5 9b bd]
12.0
13.7
14.CN_WORD
15.1
16.
17.中华人民
18.[e4 b8 ad e5 8d 8e e4 ba ba e6 b0 91]
19.0
20.4
21.CN_WORD
22.2
23.
24.中华
25.[e4 b8 ad e5 8d 8e]
26.0
27.2
28.CN_WORD
29.3
30.
31.华人
32.[e5 8d 8e e4 ba ba]
33.1
34.3
35.CN_WORD
36.4
37.
38.人民共和国
39.[e4 ba ba e6 b0 91 e5 85 b1 e5 92 8c e5 9b bd]
40.2
41.7
42.CN_WORD
43.5
44.
45.人民
46.[e4 ba ba e6 b0 91]
47.2
48.4
49.CN_WORD
50.6
51.
52.共和国
53.[e5 85 b1 e5 92 8c e5 9b bd]
54.4
55.7
56.CN_WORD
57.7
58.
59.共和
60.[e5 85 b1 e5 92 8c]
61.4
62.6
63.CN_WORD
64.8
65.
66.国
67.[e5 9b bd]
68.6
69.7
70.CN_CHAR
71.9
二、导入Pdf,word
索引数据源并不会一定来自于数据库、XML、JSON、CSV这类结构化数据,很多时候也来自于PDF、word、html、word、MP3等这类非结构化数据,从这类非结构化数据创建索引,solr也给我们提供了很好的支持,利用的是apache tika。
下面我们来看看在solr4.7中如何从pdf文件创建索引。
一、配置文件索引库
1、 新建core(可以与关系型数据库同一个core,收索用“attr_content:
下载”)
我们新建一个solr的core,用于存储文件型索引,新建core的步骤请参考:
2、 准备jar
我们在$solr_home下面新建一个extract文件夹,用于存放solr扩展jar包。
从colr4.7发布包中solr-4.7.0\dist拷贝solr-cell-4.7.0.jar到新建的extract文件夹下。
拷贝solr4.7发布包solr-4.7.0\contrib\extraction\lib下所有jar包到extract文件夹下。
3、 配置solrconfig.xml
添加请求解析配置:
[html] viewplaincopy
1.
2.
3. text
4. true
5. attr_
6. true
7.
8.
指定依赖包位置:
注意,这个相对位置不是相对于配置文件所在文件夹位置,而是相对core主目录的。
比如我的配置文件在solr_home\core1\conf,但是我的jar包在solr_home\extract那么我的相对路径就是../extract而不是../../extract。
[html] viewplaincopy
1.
4、配置schema.xml
4.1配置索引字段的类型,也就是field类型。
其中text_general类型我们用到2个txt文件(stopwords.txt、synonyms.txt),这2个txt文件在发布包示例core里面有位置在:
solr-4.7.0\example\solr\collection1\conf,复制这2个txt文件到新建的$solr_home的那个新建的core下面的conf目录下,和schema.xml一个位置。
[html] viewplaincopy
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
4.2配置索引字段,也就是field
其中有个动态类型字段,attr_*,这个是什么意思呢。
也就是solr在解析文件的时候,文件本身有很多属性,具体有哪些属性是不确定的,solr全部把他解析出来以attr作为前缀加上文件本身的属性名,组合在一起就成了field的名称
[html] viewplaincopy
1.
2.
3.
4.
5.
到这里solr服务端的配置以及完成了。
二、solrj测试
1、 需要的jar
Maven配置
[html] viewplaincopy
1.
2. org.apache.solr
3. solr-solrj
4. 4.7.0
5. test
6.
7.
8. org.apache.httpcomponents
9. httpclient
10. 4.3.2
11. test
12.
2、 测试类CreateIndexFromPDF.java
Solrj4.7里面ContentStreamUpdateRequest的addFile方法多了一个contentType参数,指明内容类型。
ContentType请参看:
[java] viewplaincopy
1.package com.clj.test.solr.solrj;
2.
3.import java.io.File;
4.import java.io.IOException;
5.
6.import org.apache.solr.client.solrj.SolrQuery;
7.import org.apache.solr.client.solrj.SolrServer;
8.import org.apache.solr.client.solrj.SolrServerException;
9.import org.apache.solr.client.solrj.impl.HttpSolrServer;
10.import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
11.import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
12.import org.apache.solr.client.solrj.response.QueryResponse;
13.
14./**
15. * 从PDF创建索引
16. * <功能详细描述>
17. *
18. * @author Administrator
19. * @version [版本号, 2014年3月18日]
20. * @see [相关类/方法]
21. * @since [产品/模块版本]
22. */
23.public class CreateIndexFromPDF
24.{
25.
26. public static void main(String[] args)
27. {
28. String fileName = "e:
/MyBatis3用户指南中文版.pdf";
29. String solrId = "MyBatis3用户指南中文版.pdf";
30. try
31. {
32. indexFilesSolrCell(fileName, solrId);
33. }
34. catch (IOException e)
35. {
36. e.printStackTrace();
37. }
38. catch (SolrServerException e)
39. {
40. e.printStackTrace();
41. }
42.
43. }
44.
45. /** 从文件创建索引
46. * <功能详细描述>
47. * @param fileName
48. * @param solrId
49. * @see [类、类#方法、类#成员]
50. */
51. public static void indexFilesSolrCell(String fileName, String solrId)
52. throws IOException, SolrServerException
53. {
54. String urlString = "http:
//localhost:
8080/solr/core1";
55. SolrServer solr = new HttpSolrServer(urlString);
56. ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract");
57.
58. String contentType="application/pdf";
59. up.addFile(new File(fileName), contentType);
60. up.setParam("literal.id", solrId);
61. up.setParam("uprefix", "attr_");
62. up.setParam("fmap.content", "attr_content");
63. up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
64.
65. solr.request(up);
66.
67. QueryResponse rsp = solr.query(new SolrQuery("*:
*"));
68. System.out.println(rsp);
69. }
70.
71.}
执行上面代码,便把我们的pdf文件上传到solr服务器,解析、创建索引,后面的solr.query是执行一个查询,查询解析索引后结果。
解析后pdf就变成了纯文本的内容,在控制台可以看到很多文档其他信息。
Solr解析完pdf、创建索引后,我们也可以在solr的管理界面查看索引结果。
Core1s就是我们新建的文件索引库。
如下图。
版权声明:
本文为博主原创文章,未经博主允许不得转载。