solr5.0入門及一些遇到的問題總結

sol可通過對文檔數據簡歷索引,然後進行搜索的搜索引擎工具,我們常用的json/xml/各種文檔文件,或者數據庫都可以被看作是文檔。

首先,要了解SOLR有一個控制檯,可以幫我們做很多事~

solr的安裝網上有一大堆就不說了 但是需要注意的是,貌似solr的每個版本目錄結構都不一樣,看到網上好多文章描述的步驟,對應的文件夾和文件都不存在了 我的目錄結構如下


[img]http://dl2.iteye.com/upload/attachment/0110/7059/1d25b5b8-d5ef-3a2a-9510-8cf782481d3c.png[/img]
其中bin不多說了,solr的核心運行文件./solr start/stop/restart等等命令吧
solr控制檯
http://localhost:8983/solr
1.創建core
這裏面,控制檯裏是菜單上有一個core,點進去之後有一個Add Core 這裏注意,至少我試了在這裏是創建無效的,他會去找Solr根目錄下你創建這個core名稱文件夾裏面的配置文件~ 所以,應該是先通過命令創建core,然後在這個菜單下添加到控制檯 命令 到solr的bin目錄下,./solr create -c [core_name]這裏面的core_name就是你要創建的core的名字,比如 ./solr create -c test
文件會被創建在server/solr的目錄下,然後裏面會有一些預生成的文件。

2.schema.xml
在創建的文件夾中的conf文件夾下
這裏面給我帶來很多困擾,默認生成的一個managed-schema文件,網上很多資料寫着,需要將這個文件改名爲schema.xml,然後修改當中的配置
但是需要注意的一點就是,需要將原來的這個文件刪掉,因爲在solrconfig.xml裏面有一段註釋如下:
<!-- To disable dynamic schema REST APIs, use the following for <schemaFactory>:

<schemaFactory class="ClassicIndexSchemaFactory"/>

When ManagedIndexSchemaFactory is specified instead, Solr will load the schema from
the resource named in 'managedSchemaResourceName', rather than from schema.xml.
Note that the managed schema resource CANNOT be named schema.xml. If the managed
schema does not exist, Solr will create it after reading schema.xml, then rename
'schema.xml' to 'schema.xml.bak'.

Do NOT hand edit the managed schema - external modifications will be ignored and
overwritten as a result of schema modification REST API calls.

When ManagedIndexSchemaFactory is specified with mutable = true, schema
modification REST API calls will be allowed; otherwise, error responses will be
sent back for these requests.
-->

所以,如果不刪除這個文件,就會默認取讀取managed-schema,無論你怎麼修改schema.xml都不起作用,當然,可以在這段註釋代碼下修改引用的文件

再說schema.xml裏面配置的就是對應的數據了,配置對應的字段(名稱、類型、是否設置索引、是否保存、是否可以爲多個值等等)
相關的配置推薦大家到[url]http://www.solrcn.com/books/#2-en[/url]去看
或者去看solr的官方文檔

3.solrconfig.xml
在創建的文件夾中的conf文件夾下
這個文件是配置當前core的,我是通過從mysql導入數據,在這個文件裏面添加了如下代碼,注意位置哦,生成的文件裏,本來就存在一些<requestHandler>標籤
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">   
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

這裏面的data-config.xml需要在同級目錄下
data-config.xml如下
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/brander"
user="root"
password="root"/>
<document>
<entity name="brand_share"
query="select id, text from t_test">
<field column="id" name="id" />
<field column="text" name="text" />
</entity>
</document>
</dataConfig>

這個文件是配置JDBC以及對應的SQL,查詢出來的數據將作爲solr的Doc文檔存在,solr則通過Doc文檔建立索引並進行檢索
column對應數據庫字段,name對應schema裏面的字段名
還有就是對於jar包,連接數據庫的jar包和dataimporthandle的jar包
solr-dataimporthandle.jar存放在solr解壓目錄下的dist裏面,這裏面存了很多以後可能會需要用到的solr功能,將這個包copy到server下的solr-webapp/webapp/WEB-INF/lib下,也就是我們運行的控制檯的Web應用程序中
jdbc的連接jar包,則放到server下的lib(這是在網上看到的,但是放進去看日誌也說找不到)所以如果找不到,需要在solrconfig.xml裏面配置lib文件夾的位置,類似如下
<lib dir="" />


4.elevate.xml
這個文件我看很多博客都沒有寫,但是我在配置的時候,就會報錯,後來查看日誌,說需要修改這個文件
將裏面的doc標籤都加上註釋
這個文件是實現類似百度競價排名一樣的功能


以上基本工作就完成了,在控制檯添加core後,可以在core選擇器裏選擇剛剛創建的core
然後進行數據導入、查詢等等一系列的操作
可在schema browser裏面查看自己配置的schema和相關的存儲關係

可以通過控制檯的core裏進行對配置修改後的reload
可以通過core頁面內的dateimport對配置data-config.xml的配置修改進行reload

有一點很重要就是要學會看log,否則,功能不好用找不到頭緒,也不知道到底哪裏出錯了
配置的時候遇到相關的問題,就可以通過日誌分析然後再Google了,這樣入門纔會快一些
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章