天天看點

solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器

@solr7.7 學習筆記

安裝solr

在home下建立檔案夾software,将solr的jar包放進software目錄下,然後解壓到/usr/local

指令是:tar -zxvf 壓縮檔案 -C /usr/local

建立core

如果是root使用者 執行指令後面必須跟 -force

正常登陸:在solr7目錄下 執行指令bin/solr start -force

用執行個體登陸:在solr7目錄下 執行指令bin/solr -e techproducts

差別: 執行個體登陸後建立的newcore在重新開機solr後會消失,且目錄在

/usr/local/solr7/example/techproducts/solr下

而正常登陸建立的core則不會消失,且目錄在

/usr/local/solr7/server/solr

第一種方法:

1、打開dos指令視窗,切換到解壓後的solr7目錄,然後輸入:bin/solr create -c newcore 之後回車;

2、打開solr安裝檔案,在/server/solr下就會出現新的檔案夾corename(就是新建立的core);

3、打開浏覽器,輸入solr通路路徑:http://localhost:8983/solr,就會看到建立的core

solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器

第二種方法

1、直接在/server/solr下建立新檔案夾,名字自定義,此處命名為newcore,作為建立的core;

2、找到/server/solr/configsets/_default目錄下的conf檔案夾,然後拷貝一份到/server/solr/newcore目錄節點下。

3、然後按照下圖操作:

solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器

在solr配置mysql

1、建立一個Core,建立Core的方法之前已經很詳細的講解過了,如果還是不清楚請參考“建立Core”;

2、導入mysql驅動包:

2.1、下載下傳 mysql 驅動包:

    mysql-connector-java-x.x.x.jar,絕大部分jar包在maven倉庫都能找到,mysql驅動包在maven倉庫中的下載下傳連結是:http://central.maven.org/maven2/mysql/mysql-connector-java/;

2.2、将 mysql 驅動包導入 solr :

    将下載下傳下來的 mysql-connector-java-x.x.x.jar 拷貝到 solr\server\solr-webapp\webapp\WEB-INF\lib 下;
           

3、配置連接配接資訊

3.1、找到建立的 Core 下的solrconfig.xml檔案(solrconfig.xml 檔案所在目錄是: solr\server\solr\mycore\conf),打開找到第一個requestHandler,大體位置如下圖:
           
solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器

在其後添加配置資訊:

<requestHandler name="/dataimport"
     class="org.apache.solr.handler.dataimport.DataImportHandler"> 
       <lst name="defaults"> 
          <str name="config">mysql-db/data-config.xml</str> 
       </lst> 
</requestHandler>
           

如下圖

solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器

最後還需要配置相關jar包

solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器

3.2、建立 data-config.xml 檔案:

建議盡量放在目前的 Core 的 conf 檔案夾下,雖然可以任意指定。此處是在 solr\server\solr\mycore\conf 下建立了 mysql-db 檔案夾作為 mysql 資料庫屬性檔案的檔案夾,然後建立 data-config.xml 檔案,在檔案中寫入資料庫連接配接資訊dataSource以及資料庫表對應的document,示例如下:
           
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <dataSource type="JdbcDataSource"
                driver="com.mysql.jdbc.Driver"
                url="jdbc:mysql://localhost:3306/solr"
                user="root"
                password="root" />
    <document>
        <entity name="person" query="select * from person"
                deltaQuery="select * from person where name > '${dataimporter.last_index_time}'">
            <field column="ID" name="id" />
            <field column="name" name="p_name" />
            <field column="age" name="p_age" />
        </entity>
    </document>
</dataConfig>
           

entry:對應于資料庫中的資料庫表,此處為 person 表;

field:資料庫字段,對應于solr的schema.xml中的 field 字段。其中 column 表示資料庫字段名,name 表示 field 的 name。

4、導入 solr 以來的庫檔案:

将 solr\solr\dist 下的 solr-dataimporthandler-7.1.0.jar 和solr-dataimporthandler-extras-7.7.2拷貝到 solr\server\solr-webapp\webapp\WEB-INF\lib 下。最後還需要配置相關jar包

5、在managed-schema檔案中添加對應于資料庫字段的field,建議在 solr 可視化界面操作。當然,一定要手動修改 managed-schema 檔案也不是不可以,但是每次更改完需要重新加載 Core,或者粗暴一點直接重新啟動solr也可以。那麼,直接修改 managed-schema 檔案的示例如下:

<field name="name" type="string" indexed="true" stored="true"/> 
<field name="age" type="pint" indexed="true" stored="true"/>
           

注意事項: 此處的name是需要對應 data-config.xml裡面是name屬性, type的類型也要遵循solr的規則,例如int類型,要寫成pint,不然就會報錯,在這裡的type也可以都寫成string類型,不影響查詢,也不報錯

配置檔案中自己帶有id屬性,不需要再配置,否則查詢時會報錯。

solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器
6.1、啟動solr;

6.2、直接進入 solr可視化界面:http://localhost:8983/solr ,我們沒有更改solr的端口,是以預設的端口是8983,主界面如下圖:
           
solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器

6.3、接下來就是導入資料庫資料,具體操作見下圖:

solr7學習筆記安裝solr建立core在solr配置mysql在solr中配置分詞器

在solr中配置分詞器

IK分詞器的jar包下載下傳位址http://search.maven.org/#search%7Cga%7C1%7Ccom.github.magese

下載下傳 ik-analyzer-solr7-7.x.jar

solr-7.7.1/server/solr-webapp/webapp/WEB-INF/lib

目錄中加入IK分詞器的jar包

在/solr-7.7.1/server/solr/article_core/conf 檔案夾下的 managed-schema檔案中配置IK中文分詞器

在managed-schema檔案中配置ik分詞器的配置

<fieldType name="text_ik" class="solr.TextField">  
           <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart="false"/>  
       <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart="false"/>  
      </fieldType>