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,查詢的語法,我會在以後的章節進行詳細介紹。