1. 程式人生 > >solr伺服器的搭建與使用

solr伺服器的搭建與使用

商品搜尋功能:

1、使用solr實現。

2、搭建搜尋服務層。

3、使用poratl調用搜索服務,實現商品搜尋。

Solr實現全文搜尋

2.1 Solr是什麼?

Solr Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件,並對索引、搜尋效能進行了優化。

Solr是一個全文檢索伺服器,只需要進行配置就可以實現全文檢索服務。

2.2 Solr的安裝及配置

Solr的版本:4.10.3

2.2.1 安裝步驟

需要把solr伺服器安裝到linux環境:

第一步:安裝linuxjdktomcat

[[email protected]

~]# ll

total 8044

-rw-r--r--. 1 root root 8234674 Oct 27  2013 apache-tomcat-7.0.47.tar.gz

[[email protected] ~]# tar -zxf apache-tomcat-7.0.47.tar.gz

[[email protected] ~]# ll

total 8048

drwxr-xr-x. 9 root root    4096 Sep 10 17:55 apache-tomcat-7.0.47

-rw-r--r--. 1 root root 8234674 Oct 27  2013 apache-tomcat-7.0.47.tar.gz

[[email protected] ~]# mkdir /usr/local/solr

[[email protected] ~]# cp apache-tomcat-7.0.47 /usr/local/solr/tomcat

cp: omitting directory `apache-tomcat-7.0.47'

[[email protected] ~]# cp apache-tomcat-7.0.47 /usr/local/solr/tomcat -r

[[email protected] ~]# cd /usr/local/solr/

[[email protected] solr]# ll

total 4

drwxr-xr-x. 9 root root 4096 Sep 10 17:56 tomcat

[[email protected] solr]#

第二步:把solr的壓縮包上傳到伺服器。並解壓。

第三步:把/root/solr-4.10.3/dist/solr-4.10.3.war包部署到tomcat下。並改名為solr.war

[[email protected] dist]# cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war

第四步:解壓war包。啟動tomcat自動解壓。關閉tomcat。刪除solr.war.

第五步:把/root/solr-4.10.3/example/lib/ext 目錄下所有的jar包複製到solr工程中。

[[email protected] ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

第六步:建立solrhomeSolrhome是存放solr伺服器所有配置檔案的目錄。

[[email protected] example]# pwd

/root/solr-4.10.3/example

[[email protected] example]# cp -r solr /usr/local/solr/solrhome

[[email protected] example]#

第七步:告訴solr伺服器solrhome的位置。

需要修改solr工程的web.xml檔案。

第八步:啟動tomcat

2.2.2 配置業務欄位

1、在solr中預設是中文分析器,需要手工配置。配置一個FieldType,在FieldType中指定中文分析器。

2Solr中的欄位必須是先定義後使用。

2.2.2.1 中文分析器的配置

第一步:使用IK-Analyzer。把分析器的資料夾上傳到伺服器。

第二步:需要把分析器的jar包新增到solr工程中。

[[email protected] IK Analyzer 2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

[[email protected] IK Analyzer 2012FF_hf1]#

第三步:需要把IKAnalyzer需要的擴充套件詞典及停用詞詞典、配置檔案複製到solr工程的classpath

/usr/local/solr/tomcat/webapps/solr/WEB-INF/classes

[[email protected] IK Analyzer 2012FF_hf1]# cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes

[[email protected] IK Analyzer 2012FF_hf1]#

注意:擴充套件詞典及停用詞詞典的字符集必須是utf-8。不能使用windows記事本編輯。

第四步:配置fieldType。需要在solrhome/collection1/conf/schema.xml中配置。

技巧:使用vivim跳轉到文件開頭gg。跳轉到文件末尾:G

<fieldType name="text_ik" class="solr.TextField">

  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

2.2.2.2 業務欄位配置

業務欄位判斷標準:

1、在搜尋時是否需要在此欄位上進行搜尋。例如:商品名稱、商品的賣點、商品的描述

2、後續的業務是否需要用到此欄位。例如:商品id

需要用到的欄位:

1、商品id

2、商品title

3、賣點

4、價格

5、商品圖片

6、商品分類名稱

7、商品描述

Solr中的業務欄位:

1、id——》商品id

其他的對應欄位建立solr的欄位。

<field name="item_title" type="text_ik" indexed="true" stored="true"/>

<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>

<field name="item_price"  type="long" indexed="true" stored="true"/>

<field name="item_image" type="string" indexed="false" stored="true" />

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

<field name="item_desc" type="text_ik" indexed="true" stored="false" />

<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>

<copyField source="item_title" dest="item_keywords"/>

<copyField source="item_sell_point" dest="item_keywords"/>

<copyField source="item_category_name" dest="item_keywords"/>

<copyField source="item_desc" dest="item_keywords"/>

重新啟動tomcat

2.3 維護索引庫

新增:新增一個json格式的檔案就可以。

修改:在solr中沒有update,只需要新增一個新的文件,要求文件id和被修改文件的id一致。原理是先刪除後新增。

刪除:使用xml格式。

刪除兩種方法:

1、根據id刪除:

<delete>

<id>test001</id>

</delete>

<commit/>

2、根據查詢刪除:

<delete>

<query>*:*</query>

</delete>

<commit/>

solrJ客戶端

需要依賴solrjjar包。

<!-- solr客戶端 -->

<dependency>

<groupId>org.apache.solr</groupId>

<artifactId>solr-solrj</artifactId>

</dependency>

3.1 使用solrj的使用

publicclass SolrJTest {

@Test

publicvoid addDocument() throws Exception {

//建立一連線

SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");

//建立一個文件物件

SolrInputDocument document = new SolrInputDocument();

document.addField("id", "test001");

document.addField("item_title", "測試商品2");

document.addField("item_price", 54321);

//把文件物件寫入索引庫

solrServer.add(document);

//提交

solrServer.commit();

}

@Test

publicvoid deleteDocument() throws Exception {

//建立一連線

SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");

//solrServer.deleteById("test001");

solrServer.deleteByQuery("*:*");

solrServer.commit();

}

}

3.2 把商品資訊匯入到索引庫

使用java程式讀取mysql資料庫中的商品資訊,然後建立solr文件物件,把商品資訊寫入索引庫。

需要釋出一個服務。

為了靈活的進行分散式部署需要建立一搜素的服務工程釋出 搜素服務。Taotao-search

3.2.1 系統架構

3.2.2 建立taotao-search工程

3.2.3 Pom檔案

需要依賴taottao-common工程

需要依賴的jar包:

Springjar

Springmvcjar包。

Solrjjar包。

Mybatisjar包。

參考taotao-rest工程。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>com.taotao</groupId>

<artifactId>taotao-parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<groupId>com.taotao</groupId>

<artifactId>taotao-search</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>war</packaging>

<dependencies>

<dependency>

<groupId>com.taotao</groupId>

<artifactId>taotao-manager-mapper</artifactId>

<version>0.0.1-SNAPSHOT</version>

</dependency>

<!-- Spring -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jsp-api</artifactId>

<scope>provided</scope>

</dependency>

<!-- solr客戶端 -->

<dependency>

<groupId>org.apache.solr</groupId>

<artifactId>solr-solrj</artifactId>

</dependency>

</dependencies>

<build>

<!-- 配置外掛 -->

<plugins>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<configuration>

<port>8083</port>

<path>/</path>

</configuration>

</plugin>

</plugins>

</build>

</project>

3.2.4 Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

id="taotao" version="2.5">

<display-name>taotao-search</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

<!-- 載入spring容器 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/applicationContext-*.xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- 解決post亂碼 -->

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>utf-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<!-- springmvc的前端控制器 -->

<servlet>

<servlet-name>taotao-search</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!-- contextConfigLocation不是必須的, 如果不配置contextConfigLocation, springmvc的配置檔案預設在:WEB-INF/servlet的name+"-servlet.xml" -->

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/springmvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>taotao-search</servlet-name>

<url-pattern>/search/*</url-pattern>

</servlet-mapping>

</web-app>

3.2.5 框架整合

參考taotao-rest工程

3.3 匯入商品資料

3.3.1 需要使用的表

3.3.2 Sql語句

SELECT

a.id,

a.title,

a.sell_point,

a.price,

a.image,

b.`name` category_name,

c.item_desc

FROM

tb_item a

LEFT JOIN tb_item_cat b ON a.cid = b.id

LEFT JOIN tb_item_desc c ON a.id = c.item_id

3.3.3 Dao

需要建立一個mapper介面+mapper對映檔案。名稱相同且在同一目錄下。

3.3.3.1 pojo

建立一個sql語句對應的pojo

publicclass Item {

privateStringid;

privateStringtitle;

privateStringsell_point;

privatelongprice;

privateStringimage;

privateStringcategory_name;

privateStringitem_des;

}

3.3.3.2 介面定義

3.3.3.3 Mapper檔案

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.taotao.search.mapper.ItemMapper" >

<select id="getItemList" resultType="com.taotao.search.pojo.Item">

SELECT

a.id,

a.title,

a.sell_point,

a.price,

a.image,

b. NAME category_name

FROM

tb_item a

LEFT JOIN tb_item_cat b ON a.cid = b.id

</select>

</mapper>

3.3.4 Service

功能:匯入所有的商品資料。沒有引數。返回結果TaotaoResult。從資料庫中查詢出所有的商品資料。建立一個SolrInputDocument物件,把物件寫入索引庫。

@Service

publicclass ItemServiceImpl implements ItemService {

@Autowired

private ItemMapper itemMapper;

@Autowired

private SolrServer solrServer;

@Override

public TaotaoResult importAllItems() {

try {

//查詢商品列表

List<Item> list = itemMapper.getItemList();

//把商品資訊寫入索引庫

for (Item item : list) {

//建立一個SolrInputDocument物件

SolrInputDocument document = new SolrInputDocument();

document.setField("id", item.getId());

document.setField("item_title", item.getTitle());

document.setField("item_sell_point", item.getSell_point());

document.setField("item_price", item.getPrice());

document.setField("item_image", item.getImage());

document.setField("item_category_name", item.getCategory_name());

document.setField("item_desc",

相關推薦

solr搭建配置

存儲 resource dual 需求 fields hat 分析器 \n AC 搭建 1、下載solr壓縮包solr-7.2.1.tgz。 2、解壓solr-7.2.1.tgz包。 3、復制solr-7.2.1/server/solr-webapp目錄下的webapp文件

伺服器搭建管理(9-1)

1.伺服器: 192.168.9.106 admin 192.168.9.107 node1 192.168.9.108 node2 2.建立deph賬號並賦予sudo許可權:(3臺) 建立賬號 [[email protected] ~]# mkdir /app/userhome -p [[e

伺服器搭建管理(9)

伺服器官網手冊 http://docs.ceph.org.cn/start/quick-ceph-deploy/ 在 CentOS 上,可以執行下列命令[[email protected] ~]# sudo yum install -y yum-utils[[email protecte

Linux:Samba檔案共享伺服器搭建訪問

本文連結: https://blog.csdn.net/xietansheng/article/details/83932033 Samba 是 Linux 和 Unix 系統上實現 SMB協議 的一款免費軟體,能在 Windows、Linux、Mac 系統上訪問 Linux 系統上

樹莓派-FTP伺服器搭建配置

1.安裝vsftpd sudo apt-get install vsftpd 2.啟用FTP服務 sudo service vsftpd start 3.編輯vsftpd的配置檔案,並自定義FTP位置 sudo nano /etc/vsftpd.conf 依照個人所需對以下選項進行定義,如需使用則

DNS伺服器搭建配置

DNS服務簡介: DNS(Domain Name System–域名系統),是因特網的一項服務。它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。是一個應用層的協議DNS使用TCP和UDP埠53。 DNS是一個分散式資料庫,命名系統

Ubuntu 18.04 ssh伺服器搭建配置

環境:         虛擬機器下的:Ubantu18.04         遠端連線工具:xshell 方法:         1.更新源列表             sudo apt-get update         2.安裝openssh-client

Linux下FTP伺服器搭建配置

環境檢查 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [[email protected] ~]# uname -r 2.6.32-696.el6.x86_64

實戰Samba伺服器搭建進階完整版

實戰Samba伺服器搭建與進階完整版 基礎介紹 smb協議簡介 samba軟體包及核心程序 samba服務 應用場景 實戰samba伺服器搭建 檢查軟體 配置檔案 企業需求 實

GitLab程式碼管理伺服器搭建配置

        Git是一個應用很廣泛的程式碼管理工具,可以說,寫程式碼不用它,我都無法想象了,哈哈~        對於企業來說,將程式碼託管在GitHub或BitBucket始終不太好,除非你想要將它開源,否則還是自己搭建伺服器來管理比較好,而GitLab就是這樣一款產品

CentOS下Git伺服器搭建客戶端(windows和centos)搭建

一.伺服器端 1.yum安裝Git伺服器 yum install -y git 2.建立一個git使用者,用來執行git服務 useradd git 3.建立客戶端登入證書 注,收集所有需要登入的使用者的公鑰,就是他們自己生成的id_rsa.pub檔案,把所有公鑰複製到/

Linux CentOS 伺服器搭建初始化配置圖文詳解

轉載自:http://www.linuxidc.com/Linux/2017-07/145878.htm  這幾天對伺服器興趣賊為濃厚,在虛擬機器上裝了一個CentOS7玩了玩,遇到過很多問題,比如網絡卡驅動設定,不能ping 等等問題,然後掏錢買個ECS搭伺服器玩玩,

2018--- (Centos7) gitlab伺服器搭建使用

一、註冊 二、安裝和配置依賴項 (必需) 1.安裝軟體 sudo yum install curl policycoreutils openssh-server openssh-clients sudo systemctl enable ss

ISCSI伺服器搭建配置

ISCSI服務簡介 ISCSI簡介: iSCSI( Internet Small Computer System Interface 網際網路小型計算機系統介面) 技術是一種新儲存技術,該技術是將現有的SCSI介面與乙太網技術相結合,使伺服器可與使用IP網路的儲

solr伺服器搭建使用

商品搜尋功能:1、使用solr實現。2、搭建搜尋服務層。3、使用poratl調用搜索服務,實現商品搜尋。2 Solr實現全文搜尋2.1 Solr是什麼?Solr 是Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Luc

Solr - 搭建調試

現在 acl nec cal 參數 .html pen src works Solr 必須運行在Java1.6 或更高版本的Java 虛擬機中,運行標準Solr 服務只需要安裝JRE 即可, 但如果需要擴展功能或編譯源碼則需要下載JDK 來完成。可以通過下面的地址下載所需J

搭建solr伺服器

Solr是一個獨立的企業級搜尋應用伺服器,它對外提供類似於Web-service的API介面。使用者可以通過http請求,向搜尋引擎伺服器提交一定格式的XML檔案,生成索引;也可以通過Http Get操作提出查詢請求,並得到XML格式的返回結果。 Solr是一個高效能,採用Java5開發,

Solr叢集搭建詳細教程(一) Linux伺服器上安裝JDK小白教程

注:歡迎大家轉載,非商業用途請在醒目位置註明本文連結和作者名dijia478,商業用途請聯絡本人[email protected]。 一、Solr叢集的系統架構 SolrCloud(solr 雲)是Solr提供的分散式搜尋方案,當你需要大規模,容錯,分散式索引和檢索能力時使用 SolrCloud

Linux中web伺服器搭建配置

一、web伺服器的簡介     網頁伺服器(Web server)一詞有兩個意思:    一臺負責提供網頁的電腦,主要是各種程式語言構建而成,通過HTTP協議傳給客戶端(一般是指網頁瀏覽器)。    一個提供網頁的伺服器程式

Zookeeper伺服器叢集的搭建操作

ZooKeeper 作用:Zookeeper 可以用來保證資料在zk叢集之間的資料的事務性一致(原子操作)。 介紹:Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分散式協調服務。 它包含一個簡單的原語集,分散式應用程式可以基於它實現同