solr伺服器的搭建與使用
商品搜尋功能:
1、使用solr實現。
2、搭建搜尋服務層。
3、使用poratl調用搜索服務,實現商品搜尋。
2 Solr實現全文搜尋
2.1 Solr是什麼?
Solr 是Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件,並對索引、搜尋效能進行了優化。
Solr是一個全文檢索伺服器,只需要進行配置就可以實現全文檢索服務。
2.2 Solr的安裝及配置
Solr的版本:4.10.3
2.2.1 安裝步驟
需要把solr伺服器安裝到linux環境:
第一步:安裝linux、jdk、tomcat。
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/
第六步:建立solrhome。Solrhome是存放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中指定中文分析器。
2、Solr中的欄位必須是先定義後使用。
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中配置。
技巧:使用vi、vim跳轉到文件開頭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/>
3 solrJ客戶端
需要依賴solrj的jar包。
<!-- 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包:
Spring的jar包
Springmvc的jar包。
Solrj的jar包。
Mybatis的jar包。
參考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",
存儲 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文件 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 伺服器官網手冊 http://docs.ceph.org.cn/start/quick-ceph-deploy/
在 CentOS 上,可以執行下列命令[[email protected] ~]# sudo yum install -y yum-utils[[email protecte
本文連結: https://blog.csdn.net/xietansheng/article/details/83932033
Samba 是 Linux 和 Unix 系統上實現 SMB協議 的一款免費軟體,能在 Windows、Linux、Mac 系統上訪問 Linux 系統上 1.安裝vsftpd
sudo apt-get install vsftpd
2.啟用FTP服務
sudo service vsftpd start
3.編輯vsftpd的配置檔案,並自定義FTP位置
sudo nano /etc/vsftpd.conf
依照個人所需對以下選項進行定義,如需使用則
DNS服務簡介:
DNS(Domain Name System–域名系統),是因特網的一項服務。它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。是一個應用層的協議DNS使用TCP和UDP埠53。
DNS是一個分散式資料庫,命名系統
環境:
虛擬機器下的:Ubantu18.04
遠端連線工具:xshell
方法:
1.更新源列表
sudo apt-get update
2.安裝openssh-client
環境檢查
[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[[email protected] ~]# uname -r
2.6.32-696.el6.x86_64
實戰Samba伺服器搭建與進階完整版
基礎介紹
smb協議簡介
samba軟體包及核心程序
samba服務
應用場景
實戰samba伺服器搭建
檢查軟體
配置檔案
企業需求
實
Git是一個應用很廣泛的程式碼管理工具,可以說,寫程式碼不用它,我都無法想象了,哈哈~
對於企業來說,將程式碼託管在GitHub或BitBucket始終不太好,除非你想要將它開源,否則還是自己搭建伺服器來管理比較好,而GitLab就是這樣一款產品
一.伺服器端
1.yum安裝Git伺服器
yum install -y git
2.建立一個git使用者,用來執行git服務
useradd git
3.建立客戶端登入證書
注,收集所有需要登入的使用者的公鑰,就是他們自己生成的id_rsa.pub檔案,把所有公鑰複製到/
轉載自:http://www.linuxidc.com/Linux/2017-07/145878.htm
這幾天對伺服器興趣賊為濃厚,在虛擬機器上裝了一個CentOS7玩了玩,遇到過很多問題,比如網絡卡驅動設定,不能ping 等等問題,然後掏錢買個ECS搭伺服器玩玩,
一、註冊
二、安裝和配置依賴項 (必需)
1.安裝軟體
sudo yum install curl policycoreutils openssh-server openssh-clients
sudo systemctl enable ss
ISCSI服務簡介
ISCSI簡介:
iSCSI( Internet Small Computer System Interface 網際網路小型計算機系統介面) 技術是一種新儲存技術,該技術是將現有的SCSI介面與乙太網技術相結合,使伺服器可與使用IP網路的儲
商品搜尋功能:1、使用solr實現。2、搭建搜尋服務層。3、使用poratl調用搜索服務,實現商品搜尋。2 Solr實現全文搜尋2.1 Solr是什麼?Solr 是Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Luc 現在 acl nec cal 參數 .html pen src works Solr 必須運行在Java1.6 或更高版本的Java 虛擬機中,運行標準Solr 服務只需要安裝JRE 即可, 但如果需要擴展功能或編譯源碼則需要下載JDK 來完成。可以通過下面的地址下載所需J
Solr是一個獨立的企業級搜尋應用伺服器,它對外提供類似於Web-service的API介面。使用者可以通過http請求,向搜尋引擎伺服器提交一定格式的XML檔案,生成索引;也可以通過Http Get操作提出查詢請求,並得到XML格式的返回結果。
Solr是一個高效能,採用Java5開發,
注:歡迎大家轉載,非商業用途請在醒目位置註明本文連結和作者名dijia478,商業用途請聯絡本人[email protected]。
一、Solr叢集的系統架構
SolrCloud(solr 雲)是Solr提供的分散式搜尋方案,當你需要大規模,容錯,分散式索引和檢索能力時使用 SolrCloud
一、web伺服器的簡介
網頁伺服器(Web server)一詞有兩個意思: 一臺負責提供網頁的電腦,主要是各種程式語言構建而成,通過HTTP協議傳給客戶端(一般是指網頁瀏覽器)。 一個提供網頁的伺服器程式
ZooKeeper
作用:Zookeeper 可以用來保證資料在zk叢集之間的資料的事務性一致(原子操作)。
介紹:Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分散式協調服務。
它包含一個簡單的原語集,分散式應用程式可以基於它實現同 |