您的位置:首页 > 其它

solr全文查询基本实现

2015-11-09 18:00 288 查看
1.概述

使用solr是为了解决系统中全文查询过慢的问题,针对大概15张表进行复杂的业务查询,数据量大概在400W左右。

使用的solr版本为5.3.0,因为当时使用的时候这个是最新的。

使用的是solr基本功能,并没有使用solr cloud。

本文不解释基本使用方法,只记录一些技术关键点。

2.搭建服务器并启动

(1)下载solr服务器

http://www.apache.org/dyn/closer.lua/lucene/solr/5.3.1

下载下来的已经是一个成型的服务器了,用的是较为轻量级的Jetty服务器,如果没有什么特殊需求的话,在使用的时候,就用这个Jetty服务器即可,不需要将里面的solr工程迁移到tomcat下面。

(2)启动服务器

windows下直接cmd进入solr目录下的bin目录,输入solr start即可。

linux 下注意给bin目录下赋予运行权限,输入./solr start即可。

(3)启动成功

如果启动成功,在浏览器里输入http://localhost:8983/solr/

会进入基本页面。

3.使用中的关键点

基本的用法我就不介绍了,主要记录一些使用时的关键点

1.多张表引入solr应该注意的事项,在solr中,引入数据主要是以核(core)为模块进行管理的,solr也提供多核联查,但书写查询语句较为复杂,且容易出错,所以在进行多表数据导入的时候,建议把相关业务放到一个核里面,一个核里面导入多张表的数据,id以表名加id区分。

2.在从数据库中导入大量数据的时候,注意需要设置批量导入属性: batchSize=”-1”,我是从mysql中进行导入的.

<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
batchSize="-1"
url="jdbc:mysql://localhost/ttm"
user="root"
password="admin"/>
<document>
</document>
</dataConfig>


3.在查询中,灵活使用q条件和fq条件,q条件应为查询主体,比如name:solr,而fq应该为辅助查询条件,如:isDeleted:false and isHide:false。如果设置了高亮显示,q查询条件中的关键字会出现在高亮结果中,所以要避免把isDeleted和isHide放入q条件中,这样查询出来的结果就会不准确了。

5.solr查询的结果集是以一个隐藏属性score进行排序的,这个值就是匹配度,一般情况下我们不需要特殊修改,当然我们可以进行自定义,但是要注意,自定义排序的字段一定要是唯一的,就是设置为required=true的属性,

6.中文分词,网上都说用"庖丁解牛"或者“ik”,但是这两个分词器都是不支持新版solr的,在新版solr中自带有中文分词包,只需要引入即可,目录是solr-5.3.0\contrib\analysis-extras\lucene-libs\lucene-analyzers-smartcn-5.3.0.jar,把这个复制到solr-5.3.0\server\solr-webapp\webapp\WEB-INF\lib这个目录下。


然后将分词器注册进入schemal.xml中

<fieldType name="text_smart" class="solr.TextField" positionIncrementGap="100">      <analyzer type="index">       <!-- 此处需要配置主要的分词类 -->
<tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>

<filter class="solr.SmartChineseWordTokenFilterFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory" />
</analyzer>
<analyzer type="query">

<tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>
<filter class="solr.SmartChineseWordTokenFilterFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory" />
</analyzer>
</fieldType>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  solr