1. 程式人生 > >Windows 下solr6.4.1連線資料庫,新建索引、簡單查詢。

Windows 下solr6.4.1連線資料庫,新建索引、簡單查詢。

索引是solr非常重要的概念,solr查詢資料庫後把查詢結果進行索引,才能達到提高搜尋效率的效果。

下面介紹如何配置資料庫進行資料查詢:

第一步:solr-home/recipe(你的core名稱,參考上一篇文章)\conf下面新建配置檔案:db-data-config.xml,內如如下:

<dataConfig>    
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/operate?characterEncoding=utf-8" user="root" password="lok,.;pqasw2t5rfgy6"/>    
        <document name="documents">
        <entity name="documents" pk="id" query="SELECT UUID() id,r.id recipeId,r.name,r.content,r.iconPath,r.collectorCount,r.updateTime,r.publishTime,r.commentorCount,
        cg.group_id recipeType,rc.deviceModelId,
        ra.name auxiliary,ri.name ingredient 
        from mipot_recipe r LEFT JOIN mipot_recipe_group_content cg on cg.recipe_id = r.id 
        LEFT JOIN mipot_recipe_cookscript rc on rc.recipeId = r.id 
        LEFT JOIN mipot_recipe_auxiliary ra on ra.recipeId = r.id 
        LEFT JOIN mipot_recipe_ingredient ri on ri.recipeId = r.id 
        where r.state=2200 ORDER BY DATE_FORMAT(r.publishTime,'%Y-%m-%d') desc, r.collectorCount desc,r.commentorCount desc"> 
           
         <field column="id" name="id" />   
         <field column="recipeId" name="recipeId" />  
         <field column="name" name="name" />   
         <field column="content" name="content" />    
         <field column="iconPath" name="iconPath" />  
         <field column="collectorCount" name="collectorCount" />  
         <field column="updateTime" name="updateTime" />  
         <field column="commentorCount" name="commentorCount" />  
         <field column="publishTime" name="publishTime" /> 
         <field column="recipeType" name="recipeType" /> 
         <field column="deviceModelId" name="deviceModelId" /> 
         <field column="auxiliary" name="auxiliary" /> 
         <field column="ingredient" name="ingredient" /> 
       
        </entity>    
    </document>    
</dataConfig>   

dataSource節點用來配置連結的資料庫驅動、url、賬號、密碼等資訊;

entity 節點用來配置查詢的主鍵(pk),查詢sql(query);

field 節點與查詢sql中需要查詢的欄位和managed-schema配置檔案中的field 對應,下一章會詳細介紹managed-schema。

第二步:修改同級目錄下的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>

如果沒有,就把上面這段貼上複製到你solrconfig.xml裡面。

第三步:在solrconfig.xml配置檔案裡搜尋"<lib",會找到以下這段程式碼:

<lib dir="D:/soft/solr-6.4.1/contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/dist/" regex="solr-cell-\d.*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/dist/" regex="solr-clustering-\d.*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/dist/" regex="solr-langid-\d.*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/contrib/ltr/lib/" regex=".*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/dist/" regex="solr-ltr-\d.*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="D:/soft/solr-6.4.1/dist/" regex="solr-velocity-\d.*\.jar" />

上面的“D:/soft/solr-6.4.1/”solr自帶的是${solr.instaill/.././../},這個路徑是錯誤的,如果不修改你本地的路徑,啟動的時候會報錯!

做完上面的三步已經配置好資料庫。下面的連結是建立索引的url:

http://localhost:8080/solr/recipe/dataimport?command=full-import

用瀏覽器開啟後,會報錯org.apache.solr.common.SolrException: Error loading class 'com.mysql.jdbc.Driver',這時你在第三步加上一句:

<lib dir="D:/soft/solr-6.4.1/server/lib/" regex="mysql-connector-java-5.1.38.jar" />

mysql-connector-java-5.1.38.jar你可以網上下載,要符合你mysql的版本。

再次瀏覽:http://localhost:8080/solr/recipe/dataimport?command=full-import建立索引,沒有意外的話可以建立成功!

訪問:http://localhost:8080/solr/index.html的solr後臺,左側選單點選core admin 然後在左側選單最下面有個下拉框:core selector 選擇你的core,可以做一些查詢操作,如下圖:


注:solr的查詢、索引等操作可以使用reset風格的url進行操作:

建立索引:http://localhost:8080/solr/recipe/dataimport?command=full-import

查詢:http://localhost:8080/solr/recipe/select?indent=on&q=*:*&wt=json,查詢的語法,我會在以後的章節進行詳細介紹。