Solr 高效自动联想

 步骤1:          首先创建三个字段:分别存放汉字,拼音和拼音首字母
<field name="hanzi" type="string" indexed="true" stored="false" multiValued="false"/>
<field name="pinyin" type="kw_pinyin" indexed="true" stored="false" multiValued="true"/>
<field name="py" type="kw_py" indexed="true" stored="false" multiValued="false" />
 然后把汉子转化成拼音和拼音首字母
 <copyField source="hanzi" dest="pinyin"/>
 <copyField source="hanzi" dest="py"/>
步骤2:    在schema.xml文件中添加如下配置。
<fieldType name="kw_pinyin" class="solr.TextField" positionIncrementGap="0">  
   <analyzer type="index"> 
   <tokenizer class="solr.KeywordTokenizerFactory"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_cn.txt" />  
      <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />  
      <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />  
   </analyzer>  
   <analyzer type="query">
			<tokenizer class="solr.KeywordTokenizerFactory"/> 
			<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_cn.txt" />
		</analyzer>  
	</fieldType>  

	<fieldType name="kw_py" class="solr.TextField" positionIncrementGap="0">
		<analyzer type="index">
			<tokenizer class="solr.KeywordTokenizerFactory"/> 
			<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_cn.txt" /> 
			<filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" isFirstChar="true" minTermLenght="2"/>
		</analyzer>
		<analyzer type="query">
			<tokenizer class="solr.KeywordTokenizerFactory"/> 
			<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_cn.txt" /> 
		</analyzer>
	</fieldType>
步骤3:    通过q=hanzi:value* OR pinyin:value OR py:value&fl:hanzi    如果想加权重还可以在q后面拼接字符串酒OK,比如 :          defType:edismax
         bf:abs(weight)^40     让某个分类、品牌、点击量等优先显示的权重设置。

猜你喜欢

转载自hui-jing-880210.iteye.com/blog/2172310
今日推荐