参考自:https://dzone.com/articles/solr-and-autocomplete-part-2?mz=33057-solr_lucene
安装solr很简单,官网下载二进制压缩包,解压后在bin目录下运行./solr start -force。这里安装的版本是7.7.3
1.添加admin core需要在solr-7.7.3/server/solr/目录下创建一个文件夹
然后将solr-7.7.3/server/solr/configsets/_default/conf下面的文件和文件夹拷贝到新建的文件夹下面,例如我的文件夹和admin core叫search_db
安装分词器:
2.下载ikanalyzer-solr6.5.zip文件(可以留下QQ,我发给你)
3.复制IK分词器的jar包:ik-analyzer-solr5-5.x.jar和solr-analyzer-ik-5.1.0.jar到solr-7.7.3/server/solr-webapp/webapp/WEB-INF/lib下,在solr-7.7.3/server/solr-webapp/webapp/WEB-INF下创建一个classes文件夹,把ext.dic,IKAnalyzer.cfg.xml,stopword.dic拷贝到classes文件夹下:
4.编辑solr-7.7.3/server/solr/xx/managed-schema文件,xx是你的core admin路径,在managed-schema文件中加入
<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>
然后验证
solr安装自动补全:
1.修改solrconfig.xml文件:
添加searchComponent, field是你要查询的补全字段:
<searchComponent name="suggest" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">remake_auto</str>
</lst>
</searchComponent>
添加:requestHandler
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
2.修改managed-schema文件:
添加:
<field name="phone" type="string" indexed="true" stored="true" multiValued="false" />
<field name="underPrice" type="pint" indexed="true" stored="true" multiValued="false" />
<field name="price" type="pint" indexed="true" stored="true" multiValued="false" />
<field name="include" type="pint" indexed="true" stored="true" multiValued="false" />
<field name="province" type="string" indexed="true" stored="true" multiValued="false" />
<field name="city" type="string" indexed="true" stored="true" multiValued="false" />
<field name="operators" type="string" indexed="true" stored="true" multiValued="false" />
<field name="details" type="text_ik" indexed="true" stored="true" multiValued="false" />
<field name="initMeal" type="string" indexed="true" stored="true" multiValued="false" />
<field name="preCost" type="pint" indexed="true" stored="true" multiValued="false" />
<field name="supplier" type="string" indexed="true" stored="true" multiValued="false" />
<field name="oneProxy" type="pint" indexed="true" stored="true" multiValued="false" />
<field name="twoProxy" type="pint" indexed="true" stored="true" multiValued="false" />
<field name="addTime" type="string" indexed="true" stored="true" multiValued="false" />
<field name="status" type="pint" indexed="true" stored="true" multiValued="false" />
<field name="remake" type="string" indexed="true" stored="true" multiValued="false" />
<field name="remake_auto" type="text_auto" indexed="true" stored="true" multiValued="false" />
<copyField source="remake" dest="remake_auto" />
copyField会自动拷贝(可有可无)
3.添加text_auto字段类型:
<fieldType class="solr.TextField" name="text_auto" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
4.注意要配置完两个配置文件再创建admin core才能生效
查询:
更新了新信息要勾选spellcheck.build才能生效
注意中文中有数字,managed-schema中的field标签的type不能用分词器text_ik类型,要用string类型,这样中文+数字的补全字段才会自动补全