【Solarium】Laravel Lumen 全文搜索引擎【记录篇非知识介绍】

项目需求使用 搜索引擎,在学习了 Solr 后,又自行研究了 ElasticSearch 的简单使用
Solr 的使用,在此不多做介绍,以下为个人认为的知识点 记录。根据此文并不能一步步搭建搜索引擎,如果需要,请移步公司大神的记录篇 laravel Solr的使用

搜索引擎接触依赖都是ElasticSearch 和 Solr 的比较和使用。

ElasticSearch

ES 的使用比较简单,部署 java环境,部署tomcat,数据索引的 导入,新增,删除,修改,都可以根据代码实现。
根据需求进行分页的修改,进行搜索结果字段的设置(也是索引导入内容的设置)。

Solr 配置的几个要点。

Solr 下载好需要下载多个必要的 jar包,如 mysql jar包,ik分词jar 包,solr 放在tomcat 的 webapps 下,
数据索引的 导入,新增,删除,修改,亦是根据代码实现。
solr-config.xml 里新增 导入 的操作配置。

  <requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst>
  </requestHandler>

managed-schema 里设置搜索的字段 及 分词的设置
这里写图片描述


    <fieldType name="text_ik" class="solr.TextField">

        <analyzer type="index">

            <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>

            <filter class="solr.LowerCaseFilterFactory"/>

        </analyzer>

        <analyzer type="query">

            <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>

            <filter class="solr.LowerCaseFilterFactory"/>

        </analyzer>

    </fieldType>

web.xml
设置solr 配置的路径。

    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>D:/phpStudy/WWW/solr-7.4.0/solr_home</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

catalina.bat 配置 日志路径


:gotJsseOpts
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
set "JAVA_OPTS=%JAVA_OPTS% -Dsolr.log.dir=D:/phpStudy/WWW/solr-7.4.0/solr_home/logs"

data-config.xml 配置 SQL 规则。


    <dataConfig>

        <dataSource convertType="true"  type="JdbcDataSource"    driver="com.mysql.jdbc.Driver"

                            url="jdbc:mysql://127.0.0.1:3306/db_name"

                           user="root"

                            password="password"/>

            <document>

                <entity name="products"
                  query="SELECT
                    p.id,
                    s.id as sid,
                    p.`name`,
                    p.`shop_id`,
                    c1.`name` AS first_cat_name,
                    c2.`name` AS second_cat_name,
                    c3.`name` AS third_cat_name,
                    b.`name` AS brand,
                    b.`logo` AS brand_logo,
                    s.price,
                    s.sale_price,
                    s.attributes,
                    p.cover_image
                  FROM
                    products p,
                    product_categories c1,
                    product_categories c2,
                    product_categories c3,
                    product_brands b,
                    product_skus s
                  WHERE
                    p.brand_id = b.id
                    AND p.product_type=1
                    AND s.product_id = p.id
                    AND p.first_cat = c1.id
                    AND p.second_cat = c2.id
                    AND p.third_cat = c3.id
                  ORDER BY
                    p.id DESC">

                  <field column='id' name='id' />
                  <field column='sid' name='sid' />
                  <field column='name' name='name' />
                  <field column='shop_id' name='shop_id' />
                  <field column='brand' name='brand' />
                  <field column='brand_logo' name='brand_logo' />
                  <field column='first_cat_name' name='first_cat_name' />
                  <field column='second_cat_name' name='second_cat_name' />
                  <field column='third_cat_name' name='third_cat_name' />
                  <field column='price' name='price' />
                  <field column='sale_price' name='sale_price' />
                  <field column='attributes' name='attributes' />
                  <field column='cover_image' name='cover_image' />
                </entity>
            </document>

</dataConfig>

在 laravel 使用 “solarium/solarium”: “^4.0” 插件。
搜索controller 里引入 插件

use Solarium\Client;
$options = [
    'endpoint' => [
        'localhost' => [
           'host' => '127.0.0.1',  //IP地址
           'port' => 8983,         //端口号
           'core' => null,
           'path' => '/solr/new_core',
           'wt'=>'json',
        ],
   ],
];

这里写图片描述

感觉Solr 在设置搜索信息的时候,要优于elasticsearch.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值