solr學習筆記

1 下載地址 http://lucene.apache.org/solr/php

wget https://mirrors.tuna.tsinghua...
tar -zxvf solr-8.1.0.tgz

2 運行 中止html

切換到目錄(solr-8.1.0/bin)
./solr start -force
./solr start -p 9529 -force (指定端口)
./solr stop -all
啓動錯誤提示 Your Max Processes Limit is currently 將solr-8.1.0/bin/solr.in.sh文件中,SOLR_ULIMIT_CHECKS設置爲false
瀏覽器輸入 http://127.0.0.1:9529/solr

3 修改時區mysql

修改文件 solr-8.1.0/bin/solr.in.sh
SOLR_TIMEZONE=PRC

4 建立core實例web

首先去目錄solr-8.1.0/server/solr/ 建立一個名字爲new_core的文件夾(如:fgou)
而後拷貝把目錄solr-8.1.0/server/configsets/basic_configs下的conf目錄拷貝到fgou目錄下
cp -r /usr/local/src/solr-8.1.0/server/solr/configsets/_default/conf  /usr/local/src/solr-8.1.0/server/solr/fgou/
而後再點擊建立便可
圖片描述

5 配置中文分詞sql

下載IK分詞器 https://pan.baidu.com/s/1fZ52... 提取碼:f76c
IKAnalyzer下載後解壓會有以下文件
圖片描述

把核心jar文件複製到solr WEB應用的lib文件夾下 圖片描述數據庫

把配置文件和詞庫等文件複製到WEB應用的classes文件夾下,若是子WEB-INF下沒有這個文件夾本身建立便可 圖片描述apache

在配置文件managed-schema中增長以下配置json

<fieldType name="fgou_ik" class="solr.TextField">
    <analyzer type="index">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/>
   </analyzer>
    <analyzer type="query">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/>
    </analyzer>
</fieldType>
重啓服務 這樣就能夠選擇到ik分詞了,建立個
圖片描述

6 導入MYSQL數據api

首先在D:/server/solr-7.4.0/dist目錄下複製以下的jar包
圖片描述
複製到 D:/server/solr-7.4.0/server/solr-webapp/webapp/WEB-INF/lib
再到 https://search.maven.org/search?q=mysql-connector下載mysql-connector
複製到D:/server/solr-7.4.0/server/solr-webapp/webapp/WEB-INF/lib目錄下
在D:/server/solr-7.4.0/server/solr/fgou/conf/solrconfig.xml配置數據庫文件信息
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
       <lst name="defaults">
           <str name="config">fgou-config.xml</str>
       </lst>
</requestHandler>

建立fgou-config.xml文件瀏覽器

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource typ="JdbcDataSource"
    driver="com.mysql.cj.jdbc.Driver"
    url="jdbc:mysql://127.0.0.1/fgou?useSSL=true&amp;serverTimezone=UTC&amp;verifyServerCertificate=false&amp;allowMultiQueries=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
    user="root"
    password="hufeng"
/>
<document>
    <entity pk="gid" dataSource="JdbcDataSource" name="goods" query="select gid,gname,group_price,sell_num,status from goods where status=1" 
            deltaQuery="select gid from goods where status = 1 and addtime > '${dataimporter.last_index_time}'" #新增修改索引
            deletedPkQuery="select gid from goods where status != 1 and addtime > '${dataimporter.last_index_time}'" #刪除索引             
            deltaImportQuery="select gid,gname,group_price,sell_num,status from goods where gid='${dataimporter.delta.gid}'"
    >
        <field column="gid" name="gid"/>
        <field column="gname" name="gname"/>
        <field column="group_price" name="group_price"/>
        <field column="sell_num" name="sell_num"/>
        <field column="status" name="status"/>
    </entity>
</document>
</dataConfig>

在managed-schema中配置字段檢索使用的分詞器

修改:<uniqueKey>gid</uniqueKey>
  新增:
  <field name="goods" type="fgou_ik" uninvertible="true" indexed="true" stored="true"/>
  <field name="gid" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
  <field name="gname" type="fgou_ik" indexed="true" stored="true"/>
  <field name="group_price" type="pdouble" indexed="true" stored="true"/>
  <field name="sell_num" type="pint" indexed="true" stored="true"/>
  <field name="status" type="pint" indexed="true" stored="true"/>

重啓服務
創建全量索引

圖片描述

創建增量索引

圖片描述

查詢

圖片描述

7 php api調用

//solr 查詢 
    public function solrQuery($core='fgou',$fl='gid',$fq='status:1',$q='gid:1',$sort='gid desc,sell desc',$start=0,$rows=10){
         $fl = urlencode($fl);
         $fq = urlencode($fq);
         $q = urlencode($q);
         $sort = urlencode($sort);
         $url = 'http://127.0.0.1:9529/solr/'.$core.'/select?fl='.$fl.'&fq='.$fq.'&q='.$q.'&sort='.$sort.'&rows='.$rows.'&start='.$start;
         $res = file_get_contents($url);
         $resArr = json_decode($res,true);
         return $resArr['response']; 
     } 
    //solr 更新索引 
    public function solrIndex($core='fgou'){
         $url = 'http://127.0.0.1:9529/solr/fgou/dataimport?indent=on&wt=json';
         $param = [
             'command'=>'delta-import',
             'verbose'=>'false',
             'clean'=>'false',
             'commit'=>'true',
             'core'=>$core,
             'name'=>'dataimport',
         ];
         $this->httpCurl($url,$param); }
     }

參考資料:

https://blog.csdn.net/u010510107/article/details/81051795
https://www.jianshu.com/p/4e86df9532d9
https://blog.csdn.net/lhc0512/article/details/82315354
https://www.jianshu.com/p/9ec946fb5be7
https://www.cnblogs.com/davidwang456/p/4744415.html
相關文章
相關標籤/搜索