solr7.3在ubuntu14上的安装配置和使用——淘淘商城(十九)

简介

  • Solr是Apache下的开源项目,是一个全文搜索服务器,采用Java开发,基于Lucene这一开源全文检索引擎工具包。
  • Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

安装solr7.3

安装jdk

安装并启动solr7.3

sudo tar -zxvf solr-7.3.0.tgz -C /usr/local
sudo mv /usr/local/solr-7.3.0 /usr/local/solr7
  • 从bin下启动solr服务器。
sudo su
/usr/local/solr7/bin/solr start -force
  • 浏览器中访问http://{host}:8983/solr/。
    8.solrindex.png

配置solr7

导入依赖jar包

  • 中文分词器相关:lucene-analyzers-smartcn.jar。
cd /usr/local/solr7/contrib/analysis-extras/lucene-libs/
sudo cp lucene-analyzers-smartcn-7.3.0.jar /usr/local/solr7/server/solr-webapp/webapp/WEB-INF/lib
  • 数据库导入相关:solr-dataimporthandler.*.jar和mysql驱动。
cd /usr/local/solr7/dist/
sudo cp solr-dataimporthandler-*.jar /usr/local/solr7/server/solr-webapp/webapp/WEB-INF/lib
cd ~
sudo cp mysql-connector-java-5.1.46.jar /usr/local/solr7/server/solr-webapp/webapp/WEB-INF/lib

solr core 模板

  • 使用configsets下参考的配置,命名为mycollection。
    8.solrconfigsets.png
cd /usr/local/solr7/server/solr/configsets
sudo cp -r sample_techproducts_configs mycollection

配置业务字段

  • managed-schema中配置solr中的域,包括名称,类型等。
    • TextField类需要使用分词器。
cd mycollection/conf
sudo gedit managed-schema
<fieldType name="text_ik" 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>

<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price"  type="plong" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_desc" type="text_ik" indexed="true" stored="false" />

<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
<copyField source="item_desc" dest="item_keywords"/>

配置数据导入文件

  • solrconfig.xml中添加存放导入数据配置文件data-config.xml的位置。
sudo gedit solrconfig.xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
      <lst name="defaults">  
         <str name="config">data-config.xml</str>  
      </lst>  
</requestHandler>  
  • 创建data-config.xml,包括数据库相关信息,sql语句,查询列名和solr中的域名对应关系。
sudo gedit data-config.xml
<?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>  
  <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.84.1:3306/taotao" user="root" password="root" batchSize="-1" />  
  <document>  
        <entity name="items" 
                query="SELECT a.id,a.title,a.price,a.sell_point,a.image,b.name category_name,c.item_desc
        FROM tb_item a
        LEFT JOIN tb_item_cat b ON a.cid = b.id
        LEFT JOIN tb_item_desc c ON a.id = c.item_id"
                deltaQuery="select id from tb_item where created > '${dataimporter.last_index_time}'">
            <field column="title" name="item_title" />
            <field column="sell_point" name="item_sell_point" />
            <field column="price" name="item_price" />
            <field column="image" name="item_image" />
            <field column="category_name" name="item_category_name" />
            <field column="item_desc" name="item_desc" />
        </entity>
  </document>  
</dataConfig>  

使用solr7

添加core

  • 重新启动solr服务器。
sudo su
/usr/local/solr7/bin/solr restart -force
  • 页面上添加core,注意配置文件的位置。
    8.addcore.png

导入和查询数据

  • 导入数据。
    8.dataimport.png
  • 查询数据。
    8.solrquery.png

索引的维护

  • 维护数据,可以使用多种数据格式,页面提交或者调用/update接口。
    8.matainsolr.png
  • 添加数据:
<add>
  <doc>
    <field name="id">test001</field>
    <field name="item_title">测试商品1</field>
    <field name="item_price">12345</field>
  </doc>  
  <doc>
    <field name="id">test002</field>
    <field name="item_title">测试商品2</field>
    <field name="item_price">54321</field>
  </doc>
</add>
<commit/>
  • 删除数据:
    • 使用主键删除。
    • 使用查询删除。
<delete>
  <id>xxx</id>
</delete>
<commit/>
<delete>
<query>*:*</query>
</delete>
<commit/>
  • 重建索引:
<optimize/>

相关问题

  • solr7不能配置环境变量,否则会报缺少solr.xml错误。
    8.containsolrxml.png
  • solr7中的域没有long类型,使用 plong 代替。
  • 连接远程的Mysql可能被拒绝,因为数据库的root权限一般只能本地登录。需要添加远程的root权限。
Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)

8.mysqlroot.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值