一、安装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>