Apache Solr搜索引擎搭建、配置、使用詳細教程

最近因業務中需要對數據庫裡面的數據進行多維度檢索,完全依賴SQL已經無法滿足業務的需求了,顯然我們需要搜索技術的支持。這玩意也沒啥可技術調研的,基本上就如下幾種方案:

  1. 自己搭建搜索引擎,採用ElasticSearch
  2. 自己搭建搜索引擎,採用Solr
  3. 使用雲服務,使用阿里雲的開放搜索產品或者ES產品

業務場景:

  • 不需要數據實時同步
  • 數據量小、訪問頻次低,因此單機即可
  • 能提供各個字段的多維度模糊查詢
  • 能簡單快速上手,容易維護
  • 成本低

基於以上場景,基本上就pass掉了使用雲服務,因為它真的不便宜,最便宜的阿里雲開放搜索或者ES產品也得1元/小時,也就是一個月720元,一年8640元,這還只是一個搜索應用,如果有多個費用會更多,所以我們還是選擇自建吧。那就需要考慮到運維成本的問題了,要能簡單快速上手且易於維護,所以我最終選擇了solr。

本文主要詳細說明solr的搭建步驟,建議大家收藏文章後,跟著文章自己動手再搭建一次,以便掌握solr的相關知識。

solr官網:https://lucene.apache.org/solr/

Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene™.

Solr是基於Apache Lucene™構建的流行的、速度極快的開源企業搜索平臺。


Apache Solr搜索引擎搭建、配置、使用詳細教程

下載&解壓

<code>//下載最新版8.4.1
wget http://mirror.bit.edu.cn/apache/lucene/solr/8.4.1/solr-8.4.1.tgz
//解壓到solr-8.4.1
tar xzf solr-8.4.1.tgz/<code>

解壓後的文件目錄如下:

Apache Solr搜索引擎搭建、配置、使用詳細教程

  • bin:腳本文件
  • contrib:solr專用功能的附加插件
  • dist:依賴的jar文件
  • docs:文檔
  • example:示例
  • licenses:使用到的第三方許可證書
  • server:solr核心應用程序所在目錄
  • 啟動solr服務

    <code>#啟動solr
    sh bin/solr start -force/<code>

    可能會出現啟動失敗的情況:

    <code>bin/solr: line 739: syntax error near unexpected token `bin/solr: line 739: `    done < /<code>

    這是可能端口被佔用了,換一個指定端口啟動:

    <code>./bin/solr start -p 8983 -force/<code>

    輸出日誌:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    這樣就啟動成功了,訪問8983的控制檯http://127.0.0.1:8983(注意檢查服務器端口8983是否開放狀態):

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    solr控制檯

    這樣我們的solr就安裝成功了。

    配置Solr Core


    Apache Solr搜索引擎搭建、配置、使用詳細教程

    add core

    可以看到提示說創建Core之前,instanceDirdataDir文件夾必須已經存在。那麼我們就先創建好對應的文件夾,記住這個目錄:solr-8.4.1/server/solr,我們會在這個目錄下創建core所屬的instanceDir,而dataDir則在instanceDir目錄下,可以拷貝configsets/_default/conf/目錄下的所有文件到新建的core下面:

    <code>cp -r configsets/_default/conf/ test_rong_msg_history//<code>

    然後回到管理頁面執行Create Core,創建好我們的Core:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    配置中文分詞器

    因為我們需要對中文內容進行模糊查詢、匹配,則需要單獨配置中文分詞器,下載ik-analyzer-8.3.0.jar,最好與自己的solr版本對應:

    <code>wget https://repo1.maven.org/maven2/com/github/magese/ik-analyzer/8.3.0/ik-analyzer-8.3.0.jar/<code>

    下載完畢後放到server/solr-webapp/webapp/WEB-INF/lib目錄下,再回到我們剛剛創建的Core目錄下,編輯managed-schema文件,增加如下內容:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    重啟solr:

    <code>bin/solr restart -force/<code>

    去solr控制檯測試一下中文分詞,選擇text_ik進行分析,可以看到IKT的分詞結果:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    中文分詞

    也可以自定義分詞,比如我們想將“測試中文分詞”中的“中文分”單獨作為一個詞來分詞的話,那麼可以如下操作:

    1.解壓ik-analyzer-8.3.0.jar,執行jar -xvf ik-analyzer-8.3.0.jar得到如下文件目錄:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    2.將ext.dic、stopword.dic、IKAnalyzer.cfg.xml三個文件拷貝到solr-8.4.1/server/solr-webapp/webapp/WEB-INF/classes目錄下(沒有classes目錄mkdir一下):

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    3.其中ext.dic就是我們自定義的中文詞,將“中文分”加到這個文件中去,重啟solr,再試試分詞效果:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    自定義分詞

    可以看到,“中文分”已經作為一個詞被solr拆出來了。

    數據源配置DataImport

    我們使用solr的目的就是為了更方便、更多維度、更快速度的檢索數據,而數據都會存儲在數據庫中,所以就需要我們將數據庫中的數據及時的導入到solr搜索引擎中,便於業務搜索。

    依賴jar包下載到dist文件夾對應目錄下:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    編輯配置文件test_rong_msg_history/conf/solrconfig.xml新增如下內容:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    在conf目錄下新增data-config.xml,主要是為了配置連接mysql數據庫的數據源信息:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    數據源配置好了,接下來回來solr控制檯,在控制檯選擇我們之前添加的core,配置其schema,也可以直接編輯managed-schema文件來配置field:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    add field

    至此,配置工作完成,開始講數據庫中的數據導入到solr中來,執行Dataimport:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    全量導入

    可以看到從數據庫中導入了112條記錄到solr,這個時候執行Query,發現可以查詢數據了:

    Apache Solr搜索引擎搭建、配置、使用詳細教程

    query

    這樣我們便完成了從mysql導入數據到solr的配置工作,大家便可以根據solr的相關查詢API來開發自己的業務了。

    以上就是solr的搭建、配置中文分詞、配置數據源的詳細步驟說明,建議大家感興趣的可以自己在本地動手搭建一下,相信大家自己搭建後,不僅初步掌握了solr搜索引擎的基礎知識,還會獲得更多其他的收穫。


    分享到:


    相關文章: