如何使用solr配置来建立多张表的索引

如何使用solr配置来建立多张表的索引,第1张

这几天刚刚学了些lucene和solr,用lucene比较底层,所以打算用solr来实现如下类似功能:

1、比如查看某篇文章,旁边能展示跟这篇文章相似的文章、新闻之类的,用moreLikeThis来做。

2、站内搜索,输入一些关键字,能搜出文章、新闻等等信息。

现在假如我有一张文章表和一张新闻表,暂不考虑关联,solr默认建立索引,在solr_home有个conf文件夹,启动Tomcat,会自动建立一个同级别的data文件夹,是存放索引的。在conf文件夹下主要有2个配置文件,其中一个schema.xml,看起来就像一张表,而不能在里面放第二张表的字段信息,因为里面有一个主键,而我

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>


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

原文地址: http://outofmemory.cn/bake/11551208.html

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

发表评论

登录后才能评论

评论列表(0条)

保存