solr使用笔记
solr配置
-
环境配置
1.1 jdk安装, JAVA_HOME 要配置,否则solr启动会报错,我也是试过了才知道的, 以前一直以为 JAVA_HOME 没啥用 . 果然,存在就是有作用的 .
1.2 solr的core生成
将 server\solr\configsets\basic_configs\conf 下的所有文件都复制到要新建的core文件目录下,然后在solr界面中新建core, 详细的网上有很多
1.3 ik配置
1.3.1 jar包, 讲jar包放在 **/server/solr-webapp/webapp/WEB-INF/lib
ik-analyzer-solr5-5.x.jar
IKAnalyzer2012FF_u1.jar
1.3.2 配置文件
schema.xml<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
<!-- 字段设置 --> <field name="fileName" type="text_ik" indexed="true" stored="true"/> <field name="filePath" type="text_ik" indexed="true" stored="true"/> <field name="author" type="string" indexed="true" stored="true"/> <field name="title" type="text_ik" indexed="true" stored="true"/> <field name="text" type="text_ik" indexed="true" stored="true"/>
到这里了可以进入solr界面看看ik分词器是否实现
IKAnalyzer.cfg.xml
在core的conf目下的IKAnalyzer.cfg.xml文件中配置,没有就自己创建<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户可以在这里配置自己的扩展字典 --> <!--<entry key="ext_dict">ext.dic;</entry> --> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords">stopword.dic;</entry> </properties>
到这里solr也就基本能用了
1.4 文件索引配置
solrconfig.xml
直接在solr界面读取目标目录索引的配置<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">tika-data-config.xml</str> </lst> </requestHandler>
在Java代码中添加solr索引的配置
<requestHandler name="/addFile" class="solr.extraction.ExtractingRequestHandler" > <lst name="defaults"> <str name="fmap.content">text</str> <str name="fmap.filepath">filePath</str> <str name="fmap.filename">fileName</str> <str name="fmap.meta">ignored_</str> <str name="lowernames">true</str> <str name="uprefix">ignored_</str> <str name="captureAttr">true</str> </lst> </requestHandler>
tika-data-config.xml
<dataConfig> <dataSource type="BinFileDataSource"/> <document> <entity name="files" dataSource="null" rootEntity="false" processor="FileListEntityProcessor" baseDir="E:/rta/repair" fileName=".(doc)|(pdf)|(docx)|(txt)|(csv)|(json)|(xml)|(pptx)|(pptx)|(ppt)|(xls)|(xlsx)" recursive="true"> <field column="file" name="id"/> <field column="fileAbsolutePath" name="filePath" /> <field column="file" name="fileName"/> <entity name="file" processor="TikaEntityProcessor" url="${files.fileAbsolutePath}" format="text"> <field column="Author" name="author" meta="true"/> <field column="title" name="title" meta="true"/> <field column="text" name="text" stripHTML="true" regex="\t|\r|\n|\s" replaceWith="" /> </entity> </entity> </document> </dataConfig>
到这里solr的配置基本已经没问题了
solr遇到的一些问题
1. 在Java中添加文件索引时,索引名称大小写问题
在Java代码中添加索引时会出现这种情况,明明添加的索引名称带大小写可是存到solr中的索引名称就全变成小写的了.
经过多次尝试后,发现只要在solrconfig.xml的requestHandler中添加这个,具体的上面有
<str name="fmap.content">text</str>
<str name="fmap.filepath">filePath</str>
<str name="fmap.filename">fileName</str>
2. ... ...还有个问题忘了, 下次想起来再补上
3. 启动时遇到过一个问题: {{core}}: {{error}}, 瞎捣鼓一下午, 啥也没改, 突然一下子就好了, 感觉跟日了狗一样