最近需要計算制造業領域大詞表每個詞的idf,詞表里一共九十多萬個詞,語料一共三百七十多萬篇分詞后文獻。最開始嘗試用程序詞表循環套語料循環得到每個詞的idf,后來又嘗試把語料存入mysql然后建立全文索引再循環用sql語句去查每個詞的idf,效率都十分不理想。
最新的想法是利用solr搜索引擎的速度來做,所以首先要把mysql的數據導入solr。
一、開啟Solr服務
1、下載solr-5.3.1.tgz包,解壓之后為solr-5.3.1
2、通過bin/solr start命令開啟solr服務
3、開啟服務之后,默認是開啟8983端口,此時就可以使用localhost:8983/solr/進行訪問了
二、從Mysql數據庫中導入數據
1、創建core或collection:bin/solr create -c 集合名
2、從mysql官網中下載一個mysql-connector-java-5.1.25.zip壓縮包,解壓出一個mysql-connector-java-5.1.25-bin.jar包,將它分別copy到solr-5.3.1/server/lib和solr-5.3.1/server/solr-webapp/webapp/WEB-INF/lib當中(只copy到第一個路徑應該就可以)
3、將solr-dataimporthandler-5.3.1.jar和solr-dataimporthandler-extras-5.3.1.jar從solr-5.3.1/dist/文件夾下copy到solr-5.3.1/server/solr-webapp/webapp/WEB-INF/lib當中(只copy第一個文件應該就可以)
4、修改solr-5.3.1/server/solr/集合名/conf/managed-schema文件為schema.xml
5、在schema.xml添加field(根據實際情況),如下:
<field name="quanwen" type="text_general" indexed="true" stored="true" required="true" />
6、修改solr-5.3.1/server/solr/collection/conf/下的solrconfig.xml的配置文件,增加一段添加數據庫數據的xml,如下:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
7、在solr-5.3.1/server/solr/collection/conf/下創建data-config.xml文件,配置訪問數據庫的用戶名、密碼、查詢語句,column對應數據庫中字段、name對應solr的schema.xml中字段(根據實際情況),文件內容如下:
<dataConfig> <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://IP:3306/庫名" user="賬號" password="密碼"/> <document> <entity name="item" query="select * from 表名"> <field column="id" name="id" /> <field column="quanwen" name="quanwen" /> </entity> </document> </dataConfig>
8、重啟服務bin/solr restart
9、