Solr是一個開源搜索平台,用於構建搜索應用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企業級的,快速的和高度可擴展的。 使用Solr構建的應用程序非常復雜,可提供高性能。
為了在CNET網絡的公司網站上添加搜索功能,Yonik Seely於2004年創建了Solr。並在2006年1月,它成為Apache軟件基金會下的一個開源項目。並於2016年發布最新版本Solr 6.0,支持並行SQL查詢的執行。
Solr可以和Hadoop一起使用。由於Hadoop處理大量數據,Solr幫助我們從這么大的源中找到所需的信息。不僅限於搜索,Solr也可以用於存儲目的。像其他NoSQL數據庫一樣,它是一種非關系數據存儲和處理技術。
總之,Solr是一個可擴展的,可部署,搜索/存儲引擎,優化搜索大量以文本為中心的數據。
Apache Solr特點
Solr是Lucene的Java API的包裝。因此,使用Solr,可以利用Lucene的所有功能。 讓我們來看看Solr的一些最突出的特點 -
- Restful APIs − 要與Solr通信,並非一定需要有Java編程技能。相反,您可以使用
restful服務與它通信。可使用文件格式(如XML,JSON和.CSV)在Solr中作為輸入文檔,並以相同的文件格式獲取結果。 - 全文搜索 - Solr提供了全文搜索所需的所有功能,例如令牌,短語,拼寫檢查,通配符和自動完成。
- 企業准備 - 根據企業/組織的需要,Solr可以部署在任何類型的系統(大或小),如獨立,分布式,雲等。
- 靈活和可擴展 - 通過擴展Java類並相應配置,可以輕松地定制Solr的組件。
- NoSQL數據庫 - Solr也可以用作大數據量級的NOSQL數據庫,可以沿着集群分布搜索任務。
- 管理界面 - Solr提供了一個易於使用,用戶友好,功能強大的用戶界面,使用它可以執行所有可能的任務,如管理日志,添加,刪除,更新和搜索文檔。
- 高度可擴展 - 在使用Solr與Hadoop時,我們可以通過添加副本來擴展其容量。
- 以文本為中心並按相關性排序 - Solr主要用於搜索文本文檔,結果根據與用戶查詢的相關性按順序傳送。
與Lucene不同,在使用Apache Solr時,可不需要具有Java編程技能。它提供了一個完整的准備部署服務,以構建一個自動完成的搜索框,Lucene是不提供的。 使用Solr可以擴展,分配和管理大規模(大數據)應用程序的索引。
Lucene在搜索應用程序
Lucene是簡單但強大的基於Java的搜索庫。 它可以在任何應用程序中用於添加搜索功能。 Lucene是一個可擴展的高性能庫,用於索引和搜索幾乎任何類型的文本。 Lucene庫提供任何搜索應用程序所需的核心操作,例如索引和搜索。
如果有一個具有大量數據的門戶網站或平台,那么我們將很可能需要在門戶/平台中提取一個搜索引擎從巨大的數據庫中提取相關信息。Lucene作為任何搜索應用程序的核心,提供與索引和搜索相關的重要操作。
Solr搜索引擎基礎
搜索引擎是指一個龐大的互聯網資源數據庫,如網頁,新聞組,程序,圖像等。它有助於在萬維網上定位信息。
用戶可以通過以關鍵字或短語的形式將查詢傳遞到搜索引擎中來搜索信息。 搜索引擎然后搜索其數據庫並向用戶返回相關鏈接。
比如下面常用到兩個搜索引擎 -
-
百度

-
谷歌

搜索引擎組件
一般來說,搜索引擎有三個基本組件,如下所列 -
- Web爬蟲 - Web爬蟲也稱為蜘蛛或機器人。 它是一個收集網絡信息的軟件組件。
- 數據庫 - Web上的所有信息都存儲在數據庫中。它們包含大量的Web資源。
- 搜索接口 - 此組件是用戶和數據庫之間的接口。它幫助用戶搜索數據庫。
搜索引擎是如何工作的?
任何搜索應用程序都需要執行以下一些或全部操作。
| 步驟 | 標題或名稱 | 描述 |
|---|---|---|
| 1 | 獲取原始內容 | 任何搜索應用程序的第一步是收集要進行搜索的目標內容。 |
| 2 | 構建文檔 | 從原始內容構建文檔,讓搜索應用程序可以很容易地理解和解釋。 |
| 3 | 分析文檔 | 在索引開始之前,將對文檔進行分析。 |
| 4 | 索引文檔 | 當文檔被構建和分析后,下一步是對它們建立索引,以便可以基於特定鍵而不是文檔的全部內容來檢索該文檔。索引類似於在書開始頁或末尾處的目錄索引,其中常見單詞以其頁碼顯示,使得這些單詞可以快速跟蹤,而不是搜索整本書。 |
| 5 | 用於搜索的用戶接口 | 當索引數據庫就緒,應用程序可以執行搜索操作。 為了幫助用戶進行搜索,應用必須提供用戶接口,用戶可以在其中輸入文本並啟動搜索過程 |
| 6 | 構建查詢 | 當用戶做出搜索文本的請求,應用程序應該使用該文本來准備查詢對象,然后可以使用該查詢對象來查詢索引數據庫以獲得相關的細節。 |
| 7 | 搜索查詢 | 使用查詢對象,檢查索引數據庫以獲取相關詳細信息和內容文檔。 |
| 8 | 渲染結果 | 當收到所需的結果,應用程序應決定如何使用其用戶界面向用戶顯示結果。 |
看看下面的插圖。 它顯示了搜索引擎功能的總體視圖。
除了這些基本操作之外,搜索應用還可以提供管理 - 用戶界面以幫助管理員基於用戶簡檔控制搜索的級別。搜索結果分析是任何搜索應用程序的另一個重要和高級方面。
Solr Windows環境安裝配置
在本章中,我們將討論如何在Windows環境中設置Solr。要在Windows系統上安裝Solr,需要按照以下步驟 -
- 訪問Apache Solr的主頁,然后點擊下載按鈕或直接訪問:http://lucene.apache.org/solr/downloads.html 。
- 選擇一個鏡像以獲取Apache Solr。從那里選擇下載名稱為
Solr-6.4.0.zip的文件。 - 將文件從下載文件夾移動到所需的目錄並解壓縮,在這個示例中,我們解壓到
D:\software\solr-6.4.0目錄下。
假設您也將下載了Solr文件將其解壓到D:\software\solr-6.4.0目錄下。在這種情況下,可以按照以下方式啟動Solr,如下面的屏幕截圖所示。
要驗證安裝,請在瀏覽器中使用以下URL。
如果安裝過程成功,那么將看到Apache Solr用戶界面的儀表板,如下所示 -
設置Java環境
我們還可以使用Java庫與Apache Solr進行通信; 但在使用Java API訪問Solr之前,需要為這些庫設置類路徑。
注:以下為 Linux 系統的設置方法,如在Window上設置,可直接將類路徑加入到環境變量中。
設置類路徑
在.bashrc文件中將類路徑設置為Solr庫。在任何編輯器中打開.bashrc,如下所示。
$ gedit ~/.bashrc
設置Solr庫的類路徑(HBase中的lib文件夾),如下所示。
export CLASSPATH = $CLASSPATH://home/hadoop/Solr/lib/*
這是為了防止在使用Java API訪問HBase時發生“未找到類(class not found)”異常。
Hadoop配置使用Solr
Solr可以和Hadoop一起使用。 由於Hadoop是用於處理大量數據,Solr幫助我們從這么大數據源中找到所需的信息。在本節中,我們將了解如何在系統上安裝Hadoop。
下載Hadoop
下面給出了如何將Hadoop下載到系統中的步驟。
第1步 - 打開Hadoop主頁 - www.hadoop.apache.org/。 單擊鏈接版本,如下面的屏幕截圖中突出顯示。
它將重定向到Apache Hadoop發布頁面,其中包含有關各種版本的Hadoop源代碼和二進制文件鏡像的鏈接,如下所示:

步驟2 - 選擇最新穩定Hadoop版本(在本教程中,選擇的是2.6.4),並單擊其二進制鏈接。 它將轉到一個頁面,其中提供了Hadoop二進制文件的鏡像。單擊其中一個鏡像下載Hadoop。
從命令提示符下載Hadoop
打開Linux終端並以超級用戶(root)身份登錄。
$ su
password:
轉到需要安裝Hadoop的目錄,並使用之前復制的鏈接將文件保存在此目錄下,如下面的代碼塊所示。
# cd /usr/local
# wget http://redrockdigimark.com/apachemirror/hadoop/common/hadoop-
2.6.4/hadoop-2.6.4.tar.gz
下載Hadoop后,使用以下命令解壓縮。
# tar zxvf hadoop-2.6.4.tar.gz
# mkdir hadoop
# mv hadoop-2.6.4/* to hadoop/
# exit
安裝Hadoop
按照下面給出的步驟在偽分布式模式下安裝Hadoop。
第1步:設置Hadoop
可以通過將以下命令附加到〜/ .bashrc文件來設置Hadoop環境變量。
export HADOOP_HOME = /usr/local/hadoop export
HADOOP_MAPRED_HOME = $HADOOP_HOME export
HADOOP_COMMON_HOME = $HADOOP_HOME export
HADOOP_HDFS_HOME = $HADOOP_HOME export
YARN_HOME = $HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR = $HADOOP_HOME/lib/native
export PATH = $PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL = $HADOOP_HOME
接下來,將所有更改應用到當前運行的系統,執行以下代碼 -
$ source ~/.bashrc
第2步:Hadoop配置
可以在位置“$HADOOP_HOME/etc/hadoop”目錄中找到所有Hadoop配置文件。需要根據您的Hadoop基礎結構對這些配置文件進行更改。
$ cd $HADOOP_HOME/etc/hadoop
為了在Java中開發Hadoop程序,必須通過將JAVA_HOME值替換為系統中Java的位置來重置hadoop-env.sh文件中的Java環境變量。
export JAVA_HOME = /usr/local/jdk1.7.0_71
以下是必須編輯以配置Hadoop的文件的列表 -
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
core-site.xml
core-site.xml文件包含諸如用於Hadoop實例的端口號,為文件系統分配的內存,用於存儲數據的內存限制以及讀/寫緩沖區大小的信息。
打開core-site.xml並在<configuration>,</ configuration>標簽中添加以下屬性。
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
hdfs-site.xml
hdfs-site.xml文件包含本地文件系統的復制數據值,namenode路徑和datanode路徑等信息。表示要存儲Hadoop基礎架構的位置。
假設有以下數據。
dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode
打開此文件,並在<configuration>,</ configuration>標記中添加以下屬性。
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value> </property> <property> <name>dfs.data.dir</name> <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value> </property> </configuration>
注意 - 在上述文件中,所有屬性值都是用戶定義的,您可以根據Hadoop基礎結構進行更改。
yarn-site.xml
此文件用於在Hadoop中配置yarn 。 打開yarn-site.xml文件,並在此文件中的<configuration>,</ configuration>標記之間添加以下屬性。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
此文件用於指定使用的MapReduce框架。默認情況下,Hadoop包含yarn-site.xml模板。 首先,需要使用以下命令將文件從mapred-site,xml.template復制到mapred-site.xml文件。
$ cp mapred-site.xml.template mapred-site.xml
打開mapred-site.xml文件,並在<configuration>,</ configuration>標簽中添加以下屬性。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
驗證Hadoop安裝
以下步驟用於驗證Hadoop安裝。
第1步:命名節點設置
使用命令“hdfs namenode -format”設置namenode,如下所示。
$ cd ~
$ hdfs namenode -format
預期輸出結果如下 -
10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.6.4
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to retain 1
images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/
第2步:驗證Hadoop dfs
以下命令用於啟動Hadoop dfs。執行此命令將啟動Hadoop文件系統。
$ start-dfs.sh
輸出結果如下 -
10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
第3步:驗證Yarn腳本
以下命令用於啟動Yarn腳本。執行此命令將啟動 Yarn 實例。
$ start-yarn.sh
輸出結果如下 -
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.6.4/logs/yarn-
hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.6.4/logs/yarn-hadoop-nodemanager-localhost.out
第4步:在瀏覽器上訪問Hadoop
訪問Hadoop的默認端口號為50070。使用以下URL在瀏覽器上獲取Hadoop服務。
得到結果如下 -

在Hadoop上安裝Solr
按照以下步驟下載並安裝Solr。
第1步
通過單擊以下鏈接打開Apache Solr的主頁 - http://lucene.apache.org/solr/

第2步
點擊下載按鈕(在上面的截圖中箭頭突出顯示)。點擊后將被重定向到Apache Solr的各種鏡像的頁面。 選擇一個鏡像並單擊它,這將重定向到一個頁面,您可以下載Apache Solr的源文件和二進制文件,如下面的屏幕截圖所示。

第3步
選擇Solr-6.2.0.tqz的文件夾將它下載到系統的文件夾中。提取下載的文件夾的內容。
第4步
在Hadoop主目錄中創建一個Solr的文件夾,並將解壓縮文件夾的內容移動到其中,如下所示。
$ mkdir Solr
$ cd Downloads
$ mv Solr-6.2.0 /home/Hadoop/
驗證
進入到solr主目錄的bin文件夾,並使用version選項驗證安裝,如以下代碼塊所示。
$ cd bin/
$ ./Solr version
6.2.0
設置主目錄和路徑
使用以下命令打開.bashrc文件 -
[Hadoop@localhost ~]$ source ~/.bashrc
現在設置Apache Solr的home和path目錄如下 -
export SOLR_HOME = /home/Hadoop/Solr
export PATH = $PATH:/$SOLR_HOME/bin/
打開終端並執行以下命令 -
[Hadoop@localhost Solr]$ source ~/.bashrc
現在,可以從任何目錄執行Solr命令。
