我从官网上下载的solr然后发布了,而且在配置文件那边做了些修改,如:
schema.xml
<!--mmseg4j field types-->
<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="D:/lucene/solr/dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我先在http://localhost:8080/solr/core0/admin/analysis.jsp 中运行了,如图
我输入了如下内容:
德基电影票、南京横店电影票、克里斯丁
发现是可以分词“南京”的
但是,我用solrj 实现了搜索功能,当我输入“南京”后,发现有部分数据搜索不到,比方说,"德基电影票、南京横店电影票、克里斯丁"这条记录就搜索不到,请问这是怎么回事哦?
------解决方案--------------------------------------------------------
你的SQL语句是 select * from .... 这样不好, 修改成 select busi_code , busi_name , busi_acc_bank from table . 所谓增加一个字段是这样的 select busi_code as code , busi_name as name , busi_name as name1 , busi_acc_bank as bank from table
然后在schema.xml多配置一个name1的对应, 这个对应就是使用默认的分词, 记住, 不要用中文分词.
然后在solr 传入搜索条件的时候, name 和name1 都进行搜索, 这样要注意你的id , 还有schema.xml中属性主键属性的配置.
其实你现在只发现了南京, solr中文分词最大的问题是对于一个汉字的搜索的支持是很不好的.