solr

  最近项目需要做pdf,word等的检索,一路走来有许多坑,也有许多收获,特此做一下记录.

这篇主要是对数据库的操作:

 1.solr分词器的安装,http://download.csdn.net/download/u011277123/9994225,下载后参照此篇文章 http://www.cnblogs.com/zuge/p/6001508.html

 2.在solr里面主要的就是solr的主目录下面的schema.xml,solrConfig.xml,mysql-data-config.xml,dataimport.properties

  solrConfig.xml主要配置了数据库的配置文件

 
  1.  
  2.   <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

  3.     <lst name="defaults">

  4.         <str name="config">mysql-data-config.xml</str>

  5.     </lst>

  6.   </requestHandler>

 

  mysql-data-config.xml具体的数据库配置

 
  1. <dataConfig>

  2. <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://10.128.90.161:3306/test" user="root" password="root123" />

  3. <document>

  4. <entity name="medi_doctors" pk="ID_"

  5. query="select * from act_id_user"

  6. deltaImportQuery="SELECT * FROM act_id_user where ID_ ='${dih.delta.ID_}'"

  7. deltaQuery="SELECT ID_ FROM act_id_user where UpdateTime > '${dataimporter.medi_doctors.last_index_time}'">

  8. <field column="ID_" name="id" />

  9. <field column="REV_" name="rev" />

  10. <field column="FIRST_" name="first" />

  11. <field column="LAST_" name="last" />

  12. <field column="EMAIL_" name="email" />

  13. <field column="PWD_" name="pwd" />

  14. <field column="PICTURE_ID_" name="pic" />

  15. <field column="UpdateTime" name="updateTime" />

  16. </entity>

  17. </document>

  18. </dataConfig>

 

  schema.xml表对应字段的配置

 
  1. <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

  2. <field name="rev" type="string" indexed="true" stored="true" multiValued="false" />

  3. <field name="first" type="string" indexed="true" stored="true" multiValued="false" />

  4. <field name="last" type="string" indexed="true" stored="true" multiValued="false" />

  5. <field name="email" type="string" indexed="true" stored="true" multiValued="false" />

  6. <field name="pwd" type="string" indexed="true" stored="true" multiValued="false" />

  7. <field name="pic" type="string" indexed="true" stored="true" multiValued="false" />

  8. <field name="updateTime" type="date" indexed="true" stored="true" />

  9. <uniqueKey>id</uniqueKey>

 

  dataimport.properties记录最后更改的时间,与mysql-data-config.xml的查询语句对应

 
  1. medi_doctors.last_index_time=2017-09-01 08\:59\:17

  2. last_index_time=2017-09-01 08\:59\:17

 

==================================

这篇主要是对PDF文件的操作:

1.solrconfig.xml中添加关于PDF的配置文件信息,

      <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />

      <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
       <lst name="defaults">
                 <str name="config">data-config.xml</str>
         </lst>
  </requestHandler>

 

2.创建data-config.xml:

 

 
  1. <dataConfig>

  2. <script><![CDATA[

  3. id = 1;

  4. function GenerateId(row) {

  5. row.put('id', (id ++).toFixed());

  6. return row;

  7. }

  8. function WipOffHtml(row) {

  9. var file = row.get('file');

  10. row.put('file',file.substr(0,file.indexOf('.')));

  11. return row;

  12. }

  13. ]]>

  14. </script>

  15. <dataSource type="BinFileDataSource" />

  16. <document>

  17. <entity name="file_a" processor="FileListEntityProcessor" dataSource="null" rootEntity="false"

  18. baseDir="索引文件所在目录" fileName=".*.pdf">

  19. <field column="fileAbsolutePath" name="filePath" />

  20. <field column="fileSize" name="size" />

  21. <field column="fileLastModified" name="lastModified" />

  22. <entity name="documentImport" processor="TikaEntityProcessor" url="${file_a.fileAbsolutePath}"

  23. format="text" transformer="HTMLStripTransformer,RegexTransformer,script:GenerateId">

  24. <field column="Author" name="author" meta="true"/>

  25. <field column="title" name="title" meta="true"/>

  26. <field column="text" name="text" stripHTML="true" regex="\t|\r|\n|\s" replaceWith=""/>

  27. </entity>

  28. </entity>

  29. </document>

  30. </dataConfig>

3: 编辑 managed-schema添加如下配置:

 
  1. <field name="text" type="text_ik" indexed="true" stored="true" omitNorms="true" multiValued="false"/>

  2. <field name="author" type="string" indexed="true" stored="true"/>

  3. <field name="title" type="string" indexed="true" stored="true"/>

  4. <field name="filePath" type="string" stored="true" multiValued="false" />

  5. <field name="size" type="long" indexed="true" stored="true" />

  6. <field name="lastModified" type="date" indexed="true" stored="true" />

  7.  
  8. <fieldType name="text_ik" class="solr.TextField">

  9. <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

  10. <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

  11. </fieldType>

其中 fileName=".*.(doc)|(pdf)|(xls)|(ppt)|(docx)" 还可对这些文件进行配置。


同事杨小清的总结:

http://note.youdao.com/share/?id=cd683d660157b1dcfb8af75baebd5ece&type=note#/

我之前本地虚拟机是4.X,现在是5.X,所以分词器要选对应的版本,下面是我安装的分词器:

http://blog.csdn.net/jiangchao858/article/details/53153272

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值