实现Solr全文搜索–laravel
1.1.Solr是什么
Solr是一个基于全文检索的企业级应用服务器。
全文检索:可以输入一段文字,通过分词检索数据!!(复习)
应用服务器:它是单独的服务。
1.2.Solr能做什么
它就是用于做全文搜索。
1.3.为什么需要Solr
问题:我们已经学过Lucene,为什么还要学习solr?
答:Lucene是一个工具包,不能单独运行,需要导入到java代码中。
Solr可以独立运行在tomcat容器中,通过http协议,以接口的方式对外提供服务,java代码只需要专注于业务的处理就可以。
bin:solr的运行脚本
contrib:solr的一些扩展jar包,用于增强solr的功能。
dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。
docs:solr的API文档
example:solr工程的例子目录:
licenses:solr相关的一些许可信息
1.4 liunx安装:
网上下载solr7.6的压缩包直接解压即可,
1.5 下载laravel的solr应用包
https://packagist.org/packages/solarium/solarium
应用:
1.6 中文分词的优化:
1: 在solr服务器上找到搜索目录:
cd /var/tmp/solr-7.6.0
然后复制智能包到相应的位置:
cp contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-7.6.0.jar server/solr-webapp/webapp/WEB-INF/lib
2:然后到使用的core中的server/solr/cnc-master/conf目录中编辑managed-schema文件,
cd /var/tmp/solr-7.6.0/server/solr/cnc-master/conf
vim managed-schema
在<fieldType name=“text_it”的上一行的位置增加如下代码
<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
</fieldType>
加好如下:
3:编辑managed-schema文件,将title、tags、property_name的type改成text_smartcn类型,如下图
4:重启solr :
cd /var/tmp/solr-7.6.0/bin/
./solr restart -force