1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入
一、下載solr,下載地址是:http://archive.apache.org/dist/lucene/solr/,選擇自己想要的solr的版本,本項目使用的版本是4.10.3
二、如果想下載Lucene,下載地址是: https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/java/
三、其中solr-4.10.3的包結構如下:
bin | solr的腳本 | |
contrib | solr為了增強自身的功能,所添加的擴展依賴包 | |
dist | Solr? build過程中產生的war包和jar包,還有它的一些依賴包。 | |
docs | 文檔 | |
Example | 例子目錄 | |
? | solr | 配置了solr運行時的信息,它是一個標準的solrhome目錄 |
? | Multicore | 可以配置多個solrCore實例 |
? | Webapps | solr.war的目錄 |
Licenes | 版本信息 | |
四、solrCore的安裝配置
1.solrhome是一個目錄,它是solr運行的主目錄,它包括多個SolrCore目錄,solrCore目錄中就solr實例的運行配置文件和數據文件。
其中solrhome的結構如下,以solr-4.10.3為例進行說明:
?
Solrhome中可以包括多個solrCore,每個solrCore相互獨立,而且可以單獨對外提供搜索和索引服務。這個目錄可以隨意放置。比如我將這個文件放置在了:D:\installed\solr-resources\solrhome
其中solrfCore的目錄結構如下:
目錄說明:
conf | 該solrcore的運行配置信息 |
data | 在索引創建成功之后,這個目錄將會出現。它主要存儲了索引文件。 |
例如下面是我創建solrcore成功之后的目錄結構:
其中conf的目錄結構:
2.創建solrCore:
創建solrCore需要先準備solrhome:
拷貝D:\installed\solr-4.10.3\example\solr到D:\installed\solr-resources,并將solr名稱改成solrhome
最終的內容結構如下:
五、solr部署到Tomcat
1:
Solr需要運行一個servlet容器,它默認通過了一個servlet容器,jetty(java寫的),項目中大多使用的是Tomcat.
我的tomcat位置:
2: solr的war部署到Tomcat中。
其中solr的war位置是:D:\installed\solr-4.10.3\example\webapps
將solr.war拷貝到D:\installed\apache-tomcat-7.0.47\webapps,重啟一下,當solr.war被解壓完成之后刪除solr這個war包。
?
3:添加擴展依賴包(日志包)
拷貝以下目錄的擴展包
?
到D:\installed\apache-tomcat-7.0.47\webapps\solr\WEB-INF\lib:
?
4添加log4j的配置文件,拷貝以下的文件:
拷貝到以下目錄:
5.在web.xml中指定solrhome的位置
找到web.xml
即:
<env-entry> ?????? <env-entry-name>solr/home</env-entry-name> ?????? <env-entry-value>D:\installed\solr-resources\solrhome</env-entry-value> ?????? <env-entry-type>java.lang.String</env-entry-type> ??? </env-entry> |
注意上面的env-entry-name不要動。下面的env-entry-value指定的是solrhome的路徑
6.啟動tomcat進行訪問
即:點擊D:\installed\apache-tomcat-7.0.47\bin\startup.bat
7.solrCore的配置
在solrCore的conf目錄下有一個文件叫solrconfig.xml
下面這些配置主要是配置solrcore的擴展jar包,solr.install.dir表示solrcore的安裝目錄
修改如下:
?
其中的../../對應的目錄:
把solr下載包中的contrib和dist文件拷貝到以下目錄(其中contrib和dist文件就在解壓后的solr-4.10.3文件夾下):
實際的代碼如下:
| <lib dir="${solr.install.dir:../..}/contrib/extraction/lib" regex=".*\.jar" /> ? <lib dir="${solr.install.dir:../..}/dist/" regex="solr-cell-\d.*\.jar" /> ? <lib dir="${solr.install.dir:../..}/contrib/clustering/lib/" regex=".*\.jar" /> ? <lib dir="${solr.install.dir:../..}/dist/" regex="solr-clustering-\d.*\.jar" /> ? <lib dir="${solr.install.dir:../..}/contrib/langid/lib/" regex=".*\.jar" /> ? <lib dir="${solr.install.dir:../..}/dist/" regex="solr-langid-\d.*\.jar" /> ? <lib dir="${solr.install.dir:../..}/contrib/velocity/lib" regex=".*\.jar" /> ? <lib dir="${solr.install.dir:../..}/dist/" regex="solr-velocity-\d.*\.jar" /> ? <lib dir="${solr.install.dir:../..}/contrib/dataimporthandler/lib" regex=".*\.jar"/> ? <lib dir="${solr.install.dir:../..}/contrib/db/lib" regex=".*\.jar"/> |
修改用于數據導入的配置文件中的內容:
修改D:\installed\solr-resources\solrhome\collection1\conf\data-config.xml,內容如下:
| <?xml version="1.0" encoding="UTF-8" ?> ? <dataConfig> ?? <dataSource type="JdbcDataSource" ?? ?driver="com.mysql.jdbc.Driver" ?? ?url="jdbc:mysql://localhost:3306/solr" ?user="root" ?? ?password="123456"/> <document> ?? <entity name="product" query="SELECT pid,name,catalog,catalog_name,price,description,picture FROM products"> <field column="pid" name="id"/>? <field column="name" name="product_name"/>? <field column="catalog" name="product_catalog"/> <field column="catalog_name" name="product_catalog_name"/>? <field column="price" name="product_price"/>? <field column="description" name="product_description"/>? <field column="picture" name="product_picture"/>? </entity> ?? </document> </dataConfig> |
修改:D:\installed\solr-resources\solrhome\collection1\conf\schema.xml,創建索引字段信息等(在最后添加如下內容):
| <!--定義field,指定field的type屬性為text_ik--> <field name="title_ik" type="text_ik" indexed="true" stored="true" /> ? ? <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/> <!-- 商品名稱 --> <field name="product_name" type="text_ik" indexed="true" stored="true" /> <!-- 商品分類id --> <field name="product_catalog" type="string" indexed="true" stored="true" /> <!-- 商品分類名稱 --> <field name="product_catalog_name" type="string" indexed="true" stored="true" /> <!-- 商品價格 --> <field name="product_price" type="float" indexed="true" stored="true" /> <!-- 商品描述 --> <field name="product_description" type="text_ik" indexed="true" stored="false" /> <!-- 商品圖片 --> <field name="product_pic" type="string" indexed="false" stored="true" /> <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <!--? 使用復制域、將product_name和product_description 都復制到product_keywords,當搜索product_keywords的時候 --> <copyField source="product_name" dest="product_keywords"/> <copyField source="product_description" dest="product_keywords"/> |
重啟一下tomcat,最后訪問地址:
最后進入如下界面,點擊Execute,然后進行數據導入:
http://127.0.0.1:8080/solr/#/
看到該頁面表示安裝成功了。
?
六、多solrCore配置
一個solr工程中可以配置多個solrCore實例。
配置多個solrCore實例好處:
1.??????一個solr工程配置多個solrCore,而且每個solrcore之間是互相獨立,可以單獨對外提供搜索和索引服務。這類似于數據庫。一個數據庫可以有多個實例。如果有新需求,可以直接擴展實例。
2.??????多個solrcore在管理索引文件時,可以進行分類管理。
3.??????使用solrcloud(solr集群)必須要建立多個solrCore.
?
復制solrhome下的collection1到本目錄下,并且改名為collection2
修改collection2文件中core.properties
配置之后,重啟tomcat,再次訪問http://127.0.0.1:8080/solr/#/,界面效果如下:
七、配置中文分詞器
使用ikAnalyzer中文分詞器:
1、把IKAnalyzer2012FF_u1.jar(就這一個)添加到solr/WEB-INF/lib目錄下
2、復制IKAnalyzer的配置文件和定義詞典和停用詞詞典到solr的classpath下。
效果如下:
3置域的類型、配置fieldType,指定使用中文分詞器。(在D:\installed\solr-resources\solrhome\collection1\conf\schema.xml中配置)
錯誤(也就是說不要analyzer這個標簽)
正確的:
?即(注意下面的text_ik和配置下面的field中的type要相同。
<fieldType name="text_ik" class="solr.TextField"> ?? <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> |
?
4配置field,使用中文分詞器的fieldType
即:
<!--定義field,指定field的type屬性為text_ik--> <field name="title_ik" type="text_ik" indexed="true" stored="true" /> <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/> |
?? 只有指定了type=”text_ik“了,才表示要進行分詞。
5重啟Tomcat測試
?
八、界面功能介紹
1.Analysis
2.Document
通過該界面操作,可以對索引庫進行添加索引、刪除索引、修改索引
在solr中,添加或修改文檔時,必須要傳入一個唯一主鍵id
3、Query
*:*:可以查詢索引的數據
九、Schema.xml的基本使用
Schema.xml文件在SolrCore中conf目錄下。這個文件主要是配置域名及域的類型等信息。
Solr中的域要先定義后使用
?
文件位置:
4.1.1 Field(重點)
配置solr的域:
<fieldname="id" type="string" indexed="true"stored="true" required="true" multiValued="false"/>
Name:域名
Type:域的類型(也需要配置)
Indexed:是否索引
Stored:是否存儲
Required:是否必須,一般只有id才設置
multiValued:是否可以多值。如果設置多值的話,里面的值就采用數組方式存儲。比如商品圖片(大圖、中圖、小圖等等)
?
4.1.2 dynamicField
配置動態域
<dynamicField name="*_i"? type="int"??? indexed="true"? stored="true"/>
Name:指定域的名稱,該域的名稱是通過一個表達式來指定的
Type:域的類型(在使用動態域的時候,要分清該域對應的類型)
?
總結
以上是生活随笔為你收集整理的1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车上lock是什么意思?
- 下一篇: 2.myql数据导入到solr,并建立s