學習總結(一)solr的配置和啓動

1 啓動solr

 a.linux或者windows解壓solr

  b.啓動命令:

  自定義solr項目:java-Dsolr.solr.home=test-core-jar start.jar

  用默認搜索項目:java-jar start.jar

 

 

 

2 建立數據項目

  a.在example目錄下創建test-core文件夾;

  b.將/solr下的solr.xml拷貝到test-core目錄下;

  c.在test-core下創建test目錄,並且在test目錄下創建conf和data目錄;

 

  d.將example\solr\collection1\core.properties文件拷貝到test目錄,修改name=test;

  e.將example\solr\collection1\conf下的schema.xml、solrconfig.xml拷貝到example\test-core\test\conf下;

  f.配置schema.xml文件:

 

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

         <schema name="example" version="1.7">

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

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

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

 

 

        <!—複製域,不同字段檢索結果取並集,檢索複製域相當於檢索所有複製域字段-->

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

        <copyField source="title1" dest="copy_item"/>

<copyField source="title2" dest="copy_item"/>

 

        <!—主鍵域-->

                   <uniqueKey>id</uniqueKey>

 

       

                   <fieldType name="string" class="solr.StrField" sortMissingLast="true" />

                   <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>

                  

                   <fieldtype name="binary" class="solr.BinaryField"/>

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

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

                   </fieldType>

         </schema>

g 修改solrconfig.xml

 

 

 

 

 

 

3 配置分詞和其他

 

  a.將IKAnalyzer-2012-4x.jar拷貝到example\solr-webapp\webapp\WEB-INF\lib下;

  b.在schema.xml文件中添加fieldType:

    IKAnalyzer-2012-4x.jar

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

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

         </fieldType>

 

  c.重啓solr,用analysis做分詞測試

 

 

4 導入數據到solr

 

  a.配置solr搜索項目的集合字段

  b.調用solr服務,導入數據

       @Before

         public void setUp() throws Exception {

                   // 在url中指定索索項目名稱

                   String url = "http://localhost:8983/solr/test";

                   HttpSolrServer httpSolrServer = new HttpSolrServer(url); // 定義solr的server

                   httpSolrServer.setParser(new XMLResponseParser()); // 設置響應解析器

                   httpSolrServer.setMaxRetries(1); // 設置重試次數,推薦設置爲1

                   httpSolrServer.setConnectionTimeout(500); // 建立連接的最長時間

 

                   this.httpSolrServer = httpSolrServer;

         }

 

         @Test

         public void testImport() throws Exception {

                   // 查詢商品數據

                   String url = "";

                   String jsonData = doGet(url);

                   List<OBJECT_T_MALL_SKU> json_to_list = MyJsonUtil.json_to_list(jsonData, new OBJECT_T_MALL_SKU());

                   this.httpSolrServer.deleteByQuery("*:*");

                   this.httpSolrServer.addBeans(json_to_list);

                   this.httpSolrServer.commit();

         }

 

 

  c.刪除solr數據,

    <delete><query>*:*</query></delete>

   this.httpSolrServer.deleteByQuery("*:*");

5 搜索項目工程

a.新建mvc項目

b.配置pom和spring容器中的solr客戶端服務

         <bean id ="solrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">

                   <constructor-arg index="0" value="${url}" />

                   <property name="parser">

                            <bean class="org.apache.solr.client.solrj.impl.XMLResponseParser" />

                   </property>

                   <property name="maxRetries" value="1" />

                   <property name="connectionTimeout" value="${connectionTimeout}"/>

         </bean>

c.新建controller,返回爲值可設置爲jsp或者json均可

d.通過HttpSolrServer對solr服務進行檢索,並處理檢索結果

                   SolrQuery sq = new SolrQuery();

                   sq.setQuery("sku_mch:聯想高配高端");

                   QueryResponse query = null;

                   try {

                            query = solrServer.query(sq);

                   } catch (SolrServerException e) {

                            e.printStackTrace();

                   }

                   List<OBJECT_T_MALL_SKU> beans = query.getBeans(OBJECT_T_MALL_SKU.class);

e.配置搜索關係

schema.xml中

<solrQueryParser defaultOperator="AND"/>

 

 

6 solr端口號修改

1 修改搜索項目的配置文件

2 修改默認端口號

7訪問url的問題

http://localhost:8983/solr/#/test  瀏覽器頁面地址

http://localhost:8983/solr/test  訪問solr搜索項地址

http://localhost:8983/solr/ solr服務地址

 

8 solr+zookeeper集羣管理

1 zookeeper的配置

1 在linux上準備多個zookeeper

2 配置zookeeper,加入Data目錄,加入myid,myid中配置server編號,Zoo.cfg中配置

  1 dataDir=/…

  2 clientPort=218?

  3 節點列表

server.1=ip:port:port

server.2=ip:port:port

3 啓動所有的zookeeper節點

  Sh zkServer.sh start

Sh zkServer.sh status

2 solr項目的配置和啓動

1 解壓solr複製war到tomcatwebapp下

 

2將solr中的ext目錄lib目錄下的jar拷貝到tomcat的solr/web-inf/lib下

 

3配置solrhome,選定目錄如usr/local/solr/solrhome

修改tomcat中的solr項目的web.xml,將項目加載路徑指向solrhome

3 部署多個solr項目實例

修改tomcat和solr的端口號,啓動多個solr

 

 

 

4 配置tomcat的java_opts選項,在tomcat中配置zookeeper的集羣ip

JAVA_OPTS=”-DzkHost=ip:2181,ip:2182,ip:2183

 

 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章