solr全文查询基本实现

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值