solr 5.5.1安装并配置中文分词IKAnalyzer下载solr 下载地址:http://mirrors.tuna./apache/lucene/solr/ 主页:http://lucene./solr/ 快速指引:http://lucene./solr/quickstart.html wiki:http://wiki./solr/FrontPage ik-analyzer for solr5 https://github.com/EugenePig/ik-analyzer-solr5 安装solr 直接解压即可(5x 需要jdk 1.7,6x需要jdk1.8) ik 下载后需要自己编译(ik-analyzer-solr5-master\README.md 中有说明)
编译后文件:ik-analyzer-solr5-5.x.jar 我已经编译了,jdk1.7编译 地址:http://download.csdn.net/detail/soft_xiang/9557495 运行solr在 solr-5.5.1\bin
运行solr start 启动默认的solr服务(没有core,需要新增)
solr start -e techproducts 可以启动带example的服务 其他更多example可以查看
更多启动参数可以使用solr start -help 查看 启动成功后如下图:
访问地址:http://localhost:8983/solr 去掉访问地址中的项目名- 修改contextPath为/
- 修改"\solr-5.5.1\server\etc\jetty.xml"的RewriteHandler


新增core- 在\solr-5.5.1\server\solr下新增文件夹,如mydemo
- 在新增的文件夹中新增conf、data两个文件夹
- 将\solr-5.5.1\server\solr\configsets\basic_configs\conf下所有文件复制到新增的conf文件夹下(或者从其他example中复制)
- 在core admin中新增,如下图

集成ik-analyzer- 关闭solr
- 将ik-analyzer-solr5-5.x.jar放入目录/solr-5.5.1/server/solr-webapp/webapp/WEB-INF/lib中
- 配置"\solr-5.5.1\example\techproducts\solr\techproducts\conf\managed-schema"
删除部分无用的fieldType、dynamicField等 添加ik支持
<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" /> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" /> </analyzer> </fieldType>
or <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
修改field name="_text_" 为ik,如图 修改text
 缩减后的文件内容见文章最后 - 测试
重启solr 然后进入analysis测试

<?xml version="1.0" encoding="UTF-8"?> <!-- Solr managed schema - automatically generated - DO NOT EDIT --> <schema name="example-data-driven-schema" version="1.6"> <uniqueKey>id</uniqueKey> <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/> <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/> <fieldType name="date" class="solr.TrieDateField" positionIncrementGap="0" precisionStep="0"/> <fieldType name="dates" class="solr.TrieDateField" positionIncrementGap="0" multiValued="true" precisionStep="0"/> <fieldType name="double" class="solr.TrieDoubleField" positionIncrementGap="0" precisionStep="0"/> <fieldType name="doubles" class="solr.TrieDoubleField" positionIncrementGap="0" multiValued="true" precisionStep="0"/> <fieldType name="float" class="solr.TrieFloatField" positionIncrementGap="0" precisionStep="0"/> <fieldType name="floats" class="solr.TrieFloatField" positionIncrementGap="0" multiValued="true" precisionStep="0"/> <fieldType name="ignored" class="solr.StrField" indexed="false" stored="false" multiValued="true"/> <fieldType name="int" class="solr.TrieIntField" positionIncrementGap="0" precisionStep="0"/> <fieldType name="ints" class="solr.TrieIntField" positionIncrementGap="0" multiValued="true" precisionStep="0"/> <fieldType name="long" class="solr.TrieLongField" positionIncrementGap="0" precisionStep="0"/> <fieldType name="longs" class="solr.TrieLongField" positionIncrementGap="0" multiValued="true" precisionStep="0"/> <fieldType name="string" class="solr.StrField" sortMissingLast="true"/> <fieldType name="strings" class="solr.StrField" sortMissingLast="true" multiValued="true"/> <fieldType name="tdate" class="solr.TrieDateField" positionIncrementGap="0" precisionStep="6"/> <fieldType name="tdates" class="solr.TrieDateField" positionIncrementGap="0" multiValued="true" precisionStep="6"/> <fieldType name="tfloat" class="solr.TrieFloatField" positionIncrementGap="0" precisionStep="8"/> <fieldType name="tfloats" class="solr.TrieFloatField" positionIncrementGap="0" multiValued="true" precisionStep="8"/> <fieldType name="tint" class="solr.TrieIntField" positionIncrementGap="0" precisionStep="8"/> <fieldType name="tints" class="solr.TrieIntField" positionIncrementGap="0" multiValued="true" precisionStep="8"/> <fieldType name="tlong" class="solr.TrieLongField" positionIncrementGap="0" precisionStep="8"/> <fieldType name="tlongs" class="solr.TrieLongField" positionIncrementGap="0" multiValued="true" precisionStep="8"/> <fieldType name="tdouble" class="solr.TrieDoubleField" positionIncrementGap="0" precisionStep="8"/> <fieldType name="tdoubles" class="solr.TrieDoubleField" positionIncrementGap="0" multiValued="true" precisionStep="8"/>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> <fieldType name="text_email_url" class="solr.TextField"> <analyzer> <tokenizer class="solr.UAX29URLEmailTokenizerFactory"/> <filter class="solr.TypeTokenFilterFactory" types="email_url_types.txt" useWhitelist="true"/> </analyzer> </fieldType>
<fieldType name="text_shingles" class="solr.TextField" positionIncrementGap="100" multiValued="true"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <!-- <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="false" /> --> <filter class="solr.LengthFilterFactory" min="2" max="18"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.PatternReplaceFilterFactory" pattern="(^[^a-z]+$)" replacement="" replace="all"/> <filter class="solr.ShingleFilterFactory" minShingleSize="3" maxShingleSize="3" outputUnigrams="false" outputUnigramsIfNoShingles="false" tokenSeparator=" " fillerToken="*"/> <filter class="solr.PatternReplaceFilterFactory" pattern="(.*[\*].*)" replacement=""/> <filter class="solr.TrimFilterFactory"/>
<!-- PRFF could have removed everything down to an empty string, remove if so --> <filter class="solr.LengthFilterFactory" min="1" max="100"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> <!-- 中文分词器 IKAnalyzer --> <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="_version_" type="long" indexed="true" stored="true"/> <field name="content_type" type="string" indexed="true" stored="true"/> <field name="doc_type" type="string" indexed="true" stored="true"/> <field name="title" type="string" indexed="true" stored="true"/> <field name="language" type="string" indexed="true" stored="true"/> <field name="content" type="text_general" multiValued="false" indexed="true" stored="true"/> <field name="text_shingles" type="text_shingles" indexed="true" stored="false"/> <!-- default _text_ <field name="_text_" type="text_general" multiValued="true" indexed="true" stored="false"/> --> <field name="_text_" type="text_ik"/> <dynamicField name="ignored_*" type="ignored" multiValued="true"/> <dynamicField name="attr_*" type="text_general" multiValued="true" indexed="true" stored="true"/> <dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/> <dynamicField name="*_dts" type="date" multiValued="true" indexed="true" stored="true"/> <dynamicField name="*_is" type="ints" indexed="true" stored="true"/> <dynamicField name="*_ss" type="strings" indexed="true" stored="true"/> <dynamicField name="*_ls" type="longs" indexed="true" stored="true"/> <dynamicField name="*_bs" type="booleans" indexed="true" stored="true"/> <dynamicField name="*_fs" type="floats" indexed="true" stored="true"/> <dynamicField name="*_ds" type="doubles" indexed="true" stored="true"/> <dynamicField name="*_dt" type="date" indexed="true" stored="true"/> <dynamicField name="*_i" type="int" indexed="true" stored="true"/> <dynamicField name="*_s" type="string" indexed="true" stored="true"/> <dynamicField name="*_l" type="long" indexed="true" stored="true"/> <dynamicField name="*_t" type="text_general" indexed="true" stored="true"/> <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/> <dynamicField name="*_f" type="float" indexed="true" stored="true"/> <dynamicField name="*_d" type="double" indexed="true" stored="true"/>
<dynamicField name="*_ti" type="tint" indexed="true" stored="true"/> <dynamicField name="*_tl" type="tlong" indexed="true" stored="true"/> <dynamicField name="*_tf" type="tfloat" indexed="true" stored="true"/> <dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/> <dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
<dynamicField name="*_tis" type="tints" indexed="true" stored="true"/> <dynamicField name="*_tls" type="tlongs" indexed="true" stored="true"/> <dynamicField name="*_tfs" type="tfloats" indexed="true" stored="true"/> <dynamicField name="*_tds" type="tdoubles" indexed="true" stored="true"/> <dynamicField name="*_tdts" type="tdates" indexed="true" stored="true"/>
<copyField source="content" dest="text_shingles"/> <copyField source="*" dest="_text_"/> </schema>
|