1
回答
请教下关于solr中文分词后,搜索结果的问题?
开发十年,就只剩下这套Java开发体系了   

大家好,因为站内搜索的需求,搞了个solr来进行站内搜索,由于以前也没接触过,这里小弟碰到一个问题,希望路过的大侠能帮着解决一下,或是给指点一下是因为什么原因,不胜感激.

问题是这样的,我的环境是linux服务器 solr版本3.6.2 mmseg4j 版本是1.8.5.我在词典里加入了 火影 火影忍者 当搜索火影忍者的时候,可以把火影忍者搜索出来,当只搜火影的时候,火影忍者搜索不出来,不知道是哪里的配置还是什么原因...

举报
debmzhang
发帖于5年前 1回/3K+阅
共有1个答案 最后回答: 5年前

你把你查询的那个字段设置成maxWord模式,然后重新加一条记录试试看。我这边之前遇到了这样一个问题,我词库有“圣诞”和“圣诞节”  ,相关设置是

<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="text" type="textMaxWord" indexed="true" stored="false" multiValued="true"/>

<copyField source="title" dest="text"/>


<fieldType name="textComplex" class="solr.TextField" >
   <analyzer>
     <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="/collection1/conf/mm4jdic"/>
   </analyzer>
  </fieldType>
  <fieldType name="textMaxWord" class="solr.TextField" >
   <analyzer>
     <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="/collection1/conf/mm4jdic"/>
   </analyzer>
  </fieldType>
  <fieldType name="textSimple" class="solr.TextField" >
   <analyzer>
     <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="/collection1/conf/mm4jdic"/>
   </analyzer>
  </fieldType>

我添加的索引字段title是“圣诞节送孩子什么礼物好?”,但是查询"圣诞"的时候,竟然不高亮,并且我使用“title:圣诞”去查询的时候竟然查询不到结果,后来我把title改成了

<field name="title" type="textMaxWord" indexed="true" stored="true" multiValued="true"/>



之后重新添加数据,查询结果就正常了!你可以去试试看。对了我使用的solr版本是4.4,mmseg4j是1.9.1

顶部