Solr學習筆記2(V7.2)---導入自己的數據


學而不思則罔,思而不學則殆,總是看文檔不動手效果是不好的。沒有實地的從自己的數據庫獲取數據測試一下始終是空,總結一下自己的操作步驟吧。

第一步准備配置文件

  E:\Solr\server\solr\configsets\_default\conf放置一個數據結構文件db-data-config.xml,內容如下

<dataConfig>
    <dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://127.0.0.1:1433;databaseName=szjy" user="sa" password="sasa" />
    <document>
        <entity name="orders" pk="id" query="select id,order_no,accept_name,address,add_time from dt_orders"
                deltaImportQuery="select id,order_no,accept_name,address,add_time from dt_orders"
                deltaQuery="select id from dt_orders where add_time > '${dataimporter.last_index_time}'">
            <field column="id" name="id" />
            <field column="order_no" name="order_no" />
            <field column="accept_name" name="accept_name" />
            <field column="address" name="address" />
            <field column="add_time" name="add_time" />
        </entity>
    </document>
</dataConfig>
View Code

conf目錄下修改solrconfig.xml文件,用於數據導入的處理程序,增加如下配置:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
            <str name="config">db-data-config.xml</str>
        </lst>
    </requestHandler>
View Code

conf目錄下修改managed-schema文件,創建數據類型(用中文分析器)增加如下配置:

<!-- ChineseAnalyzer -->
    <fieldType name="solr_cnAnalyzer" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
      </analyzer>
    </fieldType>
View Code

 

第二部拷貝jar文件

 

 

還有mssql驅動

 

將如上文件考入E:\Solr\server\solr-webapp\webapp\WEB-INF下

 

第三步啟動solr並創建集合

  此時用於生產環境,而不是example了。Windows系統命令:E:\Solr\bin>solr.cmd start -c  其中-c代表cloud模式,默認服務目錄為Solr\server,設置 Solr\server\home 系統屬性;Solr 將在這個目錄下創建核心目錄。

 

可以通過命令創建集合:E:\Solr\bin>solr.cmd create -c orders,也可以打開瀏覽器http://localhost:8983/solr/ 通過窗口創建集合。

 

第四步創建架構:

 

第五步導入數據:

第六步查詢測試:按字段查詢(如果不想按照自動查詢需要創建復制自動,但是這會增加索引文件等一些成本)+高亮顯示

 

 

 查詢結果如下

 

 也可以用C#代碼查詢,本質就是調用solr應用提供的服務(一般可能用java+solr驅動查詢,注意URL和返回內容的編碼和解碼):

 public ActionResult GetSolrData()
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:8983/solr/orders/select?q=%E5%B7%A5%E4%B8%9A%E5%9B%AD%E5%8C%BA&rows=2&start=5");
            request.ContentType = "application/json";
            request.Accept = "application/json,text/javascript,*/*,q=0.01";
            request.Headers.Add("Accept-Encoding", "deflate,gzip");
            request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip | DecompressionMethods.None;

            using (Stream stream = request.GetResponse().GetResponseStream())
            {
                StreamReader sr = new StreamReader(stream);
                string str = sr.ReadToEnd();
            }

            //WebClient wcl = new WebClient();
            //string strval = wcl.DownloadString("http://localhost:8983/solr/orders/select?q=%E5%B7%A5%E4%B8%9A%E5%9B%AD%E5%8C%BA&rows=2&start=5");

            return View();
        }
View Code

 

  


免責聲明!

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



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