solr3.5中如何用java代码为PDF,Office等文件添加索引

solr3.5中如何用java代码为PDF,Office等文件添加索引,第1张

1、将解压包中的solr-4.7.1/dist/solr-4.7.1.war复制到tomcat_dir/webapps/目录,并命名为solr.war。

2、将solr-4.7.1/example/lib/ext/目录下的jar文件复制到tomcat/lib目录下,将solr-4.7.1/example/resources/下的log4j.properties文件复制到tomcat_dir/lib目录下

切把 solr-4.7.1/example/solr,复制到tomcat_dir/bin下。

3、修改tomcat_dir/conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

URIEncoding="UTF-8" />

4、创建solr.xml,存放在路径:tomcat/conf/Catalina/localhost/solr.xml,内容:

<Context path="/solr" docBase="C:\Tomcat 7.0\webapps\solr.war"

debug="0" crossContext="true">

<Environment name="solr/home" type="java.lang.String" value="C:\Tomcat 7.0\bin\solr\" override="true" />

</Context>

PS:上面的docBase和value路径中不能存在中文字符,否则会出现404错误。

5、将C:\Tomcat 7.0\webapps下的solr.war包,启动项目解压;然后再添加几个jar包:

solr-4.7.1\dist\solr-dataimporthandler-4.7.1.jar

solr-4.7.1\dist\solr-dataimporthandler-extras-4.7.1.jar

还要加载数据库驱动包:mysql-connector-java-3.1.13-bin.jar

6、在C:\Tomcat 7.0\bin\solr\collection1\conf 下的solrconfig.xml增加以下数据库配置

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

<lst name="defaults">

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

</lst>

</requestHandler>

7、将tomcat\bin\solr\collection1\conf下增加data-config.xml文件,内容如下:

<dataConfig>

<dataSource type="JdbcDataSource"

driver="com.mysql.jdbc.Driver"

url="jdbc:mysql://192.168.1.221:3306/tmsdb"

user="root"

password="123456"/>

<document name="content">

<entity name="node" query="select id,author,title,content from solrdb">

<field column="id" name="id" />

<field column="author" name="author" />

<field column="title" name="title" />

<field column="content" name="content" />

</entity>

</document>

</dataConfig>

8、增加中文分词器,ik-analyzer的配置如下:

①目前的中文分词主要有两种

1,基于中科院ICTCLAS的隐式马尔科夫hhmm算法的中文分词器,例如smartcn等。(不支持自定义扩展词库)

2,基于正向迭代最细粒度切分算法(正向最大匹配并且最细分词)例如IK,庖丁等(支持自定义扩展词库)

安装分词前,可以去下载IK的分词包 :

IK-Analyzer-4.7.1-0.0.1-SNAPSHOT.jar

下载完毕后,将此包放进tomcat\solr的\WEB-INF\lib下面:tomcat\webapps\solr\WEB-INF\lib 。

下面需要在solr的schemal.xml进行分词器注册:

<!-- 配置IK分词器 -->

<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">

<analyzer type="index">

<!-- 分词-->

<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>

<!-- 禁用词过滤根据情况使用-->

<!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/>-->

</analyzer>

<analyzer type="query">

<!-- 分词-->

<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>

<!-- 禁用词过滤根据情况使用-->

<!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/>-->

</analyzer>

</fieldType>

最后还得配置一个引用字段就OK了

<field name="ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>

②它的安装部署十分简单,将IKAnalyzer2012.jar部署亍项目的lib目录中;IKAnalyzer.cfg.xml不stopword.dic文件放置在class根目录(对于web项目,通常是WEB-I NF/classes目彔,同hibernate、log4j等配置文件相同)下即可 ;然后配置solr4.7中schema.xml配置解析器:

<schema name="example" version="1.1">

……

<fieldType name="text" class="solr.TextField">

<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

……

</schema>

可以直接创建文件时用相对路径,如:\x0d\x0aFile dir = new File("aaa/bbb")\x0d\x0adir.mkdirs()\x0d\x0a这样创建的目录就是在当前目录下。\x0d\x0a \x0d\x0a如果要指定绝对路径可以获取当前class文件的路径:\x0d\x0atest.class.getResource("").getPath()

这个比较简单,你自己结合API就可以实现,给你说说思路吧,如果搞不定再给你代码吧

首先根据参数的个数决定调用哪个方法

switch(args.length){

case 0://显示所有,可以使用File类中的 list()来获取所有的文件数组

break

case 1://显示某个目录

break

case 2://判断第一个参数。

{if("add".equals(args[0])){

//增加并显示

}else if("del".equals(args[0])){

//删除并显示

}}

}

其中显示所有目录和文件要单独做一个方法,根据给定的目录,返回格式化后的信息。至于新建文件目录,File类中都有相应的方法,这个查一下就可以了,很简单,相信自己可以的。

ps:处理好异常,如文件夹为空,不能删除,不能新建等等


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11929288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存