Solr 入門實戰(1)--Solr 簡介及安裝


Solr 是基於 Lucene 的流行、高性能的開源企業級搜索平台。本文主要介紹 Solr 的基本概念及安裝,文中使用到的軟件版本:Solr 8.9.0、jdk1.8.0_181。

1、Solr 簡介

Solr 是一個基於 Apache Lucene 之上的搜索服務器,它是一個開源的、基於 Java 的信息檢索庫。它旨在提供功能強大的文檔檢索服務。Solr 基於開放標准,是高度可擴展的。Solr 查詢是簡單的 HTTP 請求 URL,響應是一個結構化文檔:主要是 JSON,但也可以是 XML、CSV 或其他格式。任何能夠使用 HTTP 的平台都可以與 Solr 對話。

1.1、Solr 架構

1.2、Solr 特點

a、Solr 基於已有的 XML、JSON 和 HTTP 標准,提供簡單的類似 REST 的服務,這使得 Solr 可以被不同編程語言的應用訪問。
b、Solr 可以使用 Zookeeper 實現簡易分片和復制,統一配置。
c、為了提高查詢速度和處理更多的文檔,Solr 可以通過索引分片來實現分布式查詢。
d、為了提高吞吐量和容錯能力,可以為每個索引分片增加副本,同時,把所有的索引復制到其他的服務器搭建成一個服務器集群,提高吞吐量。
e、可通過緩存來提高查詢速度,達到近實時查詢。並寫入到硬盤以達到持久化索引。

1.3、內核/集合

Solr 的內核是運行在 Solr 服務器中的具有唯一命名的、可管理的和可配置的索引。一台 Solr 服務器可以托管一個或多個內核。內核典型的用途是為了區分不同模式的文檔。單機模式下,內核可以理解為一個索引庫。

SolrCloud 引入了集合的概念,集合將具有唯一命名的、可管理的和可配置的索引擴展成不同的分片,並且分配到多台服務器上。分布式索引的每一個分片都托管在一個 Solr 的內核中,即多個內核可以組成一個索引庫。

2、Solr 安裝

2.1、下載安裝包並解壓

https://solr.apache.org/downloads.html

tar zxvf solr-8.9.0.tgz

2.2、目錄說明

bin/ 該目錄中包含幾個重要的腳本:
    solr/solr.cmd 這是 Solr 的控制腳本,用於啟動和停止 Solr 服務。在 SlorCloud 模式下運行時,可以創建集合或內核,配置身份驗證以及使用配置文件。
    post 用於發布內容到 solr 的一個簡單的命令行工具。
    solr.in.sh/solr.in.cmd 此處配置 Java,Jetty 和 Solr 的系統級屬性,即全局屬性。
    install_solr_services.sh 在 *nix 系統上將 Solr 安裝為服務。
contrib/ 該目錄包含 Solr 專用功能的附加插件。
dist/ 該目錄包含主要的 Solr jar 文件。
docs/ solr 幫助文檔。
example/ 包含幾種演示各種 Solr 功能的示例。
licenses/ 包含 Solr 使用的第三方庫的所有許可證。
server/ 該目錄是 Solr 應用程序的核心所在:
    Solr 的 Admin UI(server/solr-webapp)
    Jetty 庫(server/lib)
    日志文件(server/logs)和日志配置(server/resources)
    示例配置(server/solr/configsets)

2.3、啟動/停止 Solr

bin/solr start [-p port]
bin/solr stop [-p port]

如果不指定端口,默認為 8983

2.4、控制台

http://10.40.10.66:8983/solr

2.5、創建/刪除內核

bin/solr create -c new_core [-p port]

bin/solr delete -c new_core

默認在 server/solr 下會生成內核目錄,內核目錄下包含兩個目錄一個文件:

conf/:存放內核的配置文件。
data/:存放索引數據,相當於 lucene 中定義 IndexWriter 對象的第一個 Directory 參數。
core.preperties:內核的一些參數定義。

2.6、配置 IK 分詞器

1、下載 IK 分詞器的 jar 包放入 server/solr-webapp/webapp/WEB-INF/lib 目錄下;可到 Maven 中央倉庫(https://search.maven.org/)下載 jar 包:

<dependency>
    <groupId>com.github.magese</groupId>
    <artifactId>ik-analyzer</artifactId>
    <version>8.4.0</version>
</dependency>

2、將 resources 目錄下的 5 個配置文件放入 server/resources 目錄下;可以在 github(https://github.com/magese/ik-analyzer-solr) 上下載這些配置文件:

IKAnalyzer.cfg.xml
ext.dic
stopword.dic
ik.conf
dynamicdic.txt

3、修改 Solr 的 managed-schema,添加 IK 分詞器:

<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>

IK 分詞器詳細的使用可參考官網說明:https://github.com/magese/ik-analyzer-solr

3、Solr 控制台使用

3.1、添加核心

可以通過命令行來添加核心:

bin/solr create -c new_core

3.2、在核心中添加 schema 信息

可以在 managed-schema 中查看添加的字段信息:

<field name="about" type="text_ik" uninvertible="true" indexed="true" stored="true"/>
<field name="age" type="pint" uninvertible="true" indexed="true" stored="true"/>
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="name" type="text_ik" uninvertible="true" indexed="true" stored="true"/>
<field name="poems" type="text_ik" uninvertible="true" indexed="true" stored="true"/>
<field name="success" type="text_ik" uninvertible="true" indexed="true" stored="true"/>

3.3、添加/更新文檔

{"id": "123456","age": 40,"name": "李白","poems": "望廬山瀑布","about": "字太白","success": "創造了古代浪漫主義文學高峰、歌行體和七絕達到后人難及的高度"},
{"id": "123457","age": 31,"name": "杜甫","poems": "望岳","about": "字子美","success": "唐代偉大的現實主義文學作家,唐詩思想藝術的集大成者"}

3.4、查詢文檔

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM