一、安裝solr,以6.4.2爲例
1、下載安裝solr
下載地址:http://www.apache.org/dyn/closer.lua/lucene/solr/6.4.2
2、下載解壓後cmd進入solr-6.4.2\bin目錄並輸入命令:solr start (默認端口8983) 或者 solr start -p xxxx(指定啓動端口)
3、瀏覽器訪問http://localhost:8080/solr,即可看到solr頁面
二、 創建core
1、在solr-6.4.2\server\solr文件夾下創建Core的文件夾,如:my_solr。
2、把solr-6.4.2\server\solr\configsets\basic_configs文件下的conf文件夾複製到1中創建的文件夾my_solr裏面。
3、在http://localhost:8080/solr頁面點擊Code Admin,填寫好新增核心的表單,其中name、instanceDir要與1中創建的文件夾名稱一致。點擊Add Core即完成Core的創建。
三、 配置索引字段
方法一:可以在http://localhost:8080/solr裏面選擇自己的核心Core,點擊Scheam進行添加,修改。
方法二:直接在solr-6.4.2\server\solr\my_solr\conf文件夾裏面的managed-schema文件進行添加修改。
字段配置Field:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
name:字段名稱
type:字段類型
indexed:是否可被索引
stored:字段內容是否需要返回給搜索結果
required:字段必須有值
multiValued:是否多值字段,用於數組,集合
注意:<field name="_version_" type="long" indexed="true" stored="true"/>類似這樣的字段(兩端爲下劃線的字段爲保留字段)爲保留字段。
動態字段dynamicField:
<dynamicField name="*_i"type="int" indexed="true" stored="true"/>
複製字段copyField:
<copyField source="firstName" dest="text"/>
<copyField source="lastName" dest="text"/>
把多個字段合併在一起,如上面的firstName和lastName,當搜索text字段時,即搜索firstName和lastName
四、 solr在java中的使用
參考API: https://cwiki.apache.org/confluence/display/solr/Using+SolrJ
五、 配置中文分詞查詢器
1、下載mmseg4j-2.3.0以上版本查詢器: https://github.com/chenlb/mmseg4j-solr
2、下載完後解壓,把mmseg4j-core-1.10.0.jar,mmseg4j-solr-2.3.0.jar放到D:\solr-6.4.2\server\solr-webapp\webapp\WEB-INF\lib文件夾下。
3、配置managed-schema文件,增加如下類內容:
<fieldtype name="text_Complex" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex"/>
</analyzer>
</fieldtype>
<fieldtype name="text_MaxWord" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" />
</analyzer>
</fieldtype>
<fieldtype name="text_Simple" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple"/>
</analyzer>
</fieldtype>
4、修改需要分詞的字段type,如:
<field name="title" type="text_Simple" indexed="true" stored="true" multiValued="false" />
六、 上傳文件處理器
<requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler" >
<lst name="defaults">
<str name="lowernames">false</str>
<str name="uprefix">ignored_</str> //文件元數據是加上前綴
<str name="fmap.meta">ignored_</str>//忽略fmap.meta開頭的
<str name="captureAttr">true</str>//是否需要文件的格式
<str name="fmap.content">fcontent</str> // fmap.content賦值給fcontent
</lst>
</requestHandler>