五、新建核心
Solr安装完成后默认是没有核心的。需要手动配置。
需要在solr/server/solr下新建文件夹,并给定配置文件,否则无法建立。
1.新建目录
在/usr/local/solr/server/solr中新建自定义名称目录。此处示例名称为testcore。
# cd /usr/local/solr/server/solr # mkdir testcore
2.复制配置文件
在configsets里面包含了default和sample_techproducts_configs。里面都是配置文件示例。default属于默认配置,较纯净。sample_techproducts_configs是带有了一些配置示例。
# cp -r configsets/_default/conf/ testcore/
3.填写Core信息
在可视化管理界面中Core Admin中编写信息后点击Add Core后,短暂延迟后testcore就会创建成功。schema处不用更改。
4.出现testcore
在客户端管理界面中,选择新建的Core后,就可以按照自己项目的需求进行操作了。
六、分词Analysis
在Solr可视化管理界面中,Core的管理菜单项中都会有Analysis。表示根据Scheme.xml(managed-schema)中配置要求进行解析。
对英文解析就比较简单了,只要按照空格把英文语句拆分成英文单词即可。
但是如果条件是中文时,把一句话按照字进行拆分就不是很合理了。正确的方式是按照合理的词组进行拆分。
1.配置步骤
上传ik-analyzer.jar到webapps中。
去Maven Central Repository Search下载对应版本的ik-analyzer。可以在资料中直接获取。
1.1上传jar到指定目录
上传ik-analyzer-7.7.0.jar到
/usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib目录中
1.2修改配置文件
修改/usr/local/solr/server/solr/testcore/conf/managed-schema
# vim /usr/local/solr/server/solr/testcore/conf/managed-schema
添加下面内容。
排版:Esc 退出编辑状态下:gg=G
<field name="myfield" type="text_ik" indexed="true" stored="true" /> <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
1.3重启
# cd /usr/local/solr/bin # ./solr stop -all # ./solr start -force
1.4验证
可以在可视化管理界面中找到myfield属性进行验证。
2.managed-schema配置说明
2.1< fieldType/>
表示定义一个属性类型。在Solr中属性类型都是自定义的。在上面配置中name=”text_ik”为自定义类型。当某个属性取值为text_ik时IK Analyzer才能生效。
2.2< field/>
表示向Document中添加一个属性。
常用属性:
name: 属性名
type:属性类型。所有类型都是solr使用<fieldType>配置的
indexed: 是否建立索引
stored: solr是否把该属性值响应给搜索用户。
required:该属性是否是必须的。默认id是必须的。
multiValued:如果为true,表示该属性为复合属性,此属性中包含了多个其他的属性。常用在多个列作为搜索条件时,把这些列定义定义成一个新的复合属性,通过搜索一个复合属性就可以实现搜索多个列。当设置为true时与< copyField source="" dest=""/>结合使用
2.3< uniqueKey>
唯一主键,Solr中默认定义id属性为唯一主键。ID的值是不允许重复的。
2.4< dynamicField>
名称中允许*进行通配。代表满足特定名称要求的一组属性。
msb_java
msb_bigdata
msb_UI
msb_*