1月 15, 2020 - laravel, php开发    实现Solr全文搜索–laravel已关闭评论

实现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

 

 

 

评论被关闭。