搜索引擎 sunspot 分词问题

hooopo · 2012年07月31日 · 最后由 zamia 回复于 2013年12月19日 · 10681 次阅读

http://ruby-china.org/search?q=%E7%B4%A2%E5%BC%95+sunspot++hh

http://ruby-china.org/search?q=%E7%B4%A2%E5%BC%95sunspot

http://ruby-china.org/search?q=%E7%B4%A2%E5%BC%95+sunspot

上面三个链接,只有最后一个能搜出结果。我觉得第三个链接能搜出内容,在后面随便加一个词也是能搜出内容的,这样理解对么?

是因为搜索的关键字没有经过分词缘故?

#1 楼 @quakewang 我在本地用那个带 mmseg4j 的 server 测试,效果也一样。是还需要其他配置吗

试试看将 solr/conf/schema.xml 文件的 index 和 query 的 analyzer 分开,然后给 query 添加一个 PositionFilterFactory

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dict"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dict"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PositionFilterFactory" />
  </analyzer>
</fieldType>

这个配置是很早之前写的,具体的配置得咨询熟悉 solr 的人或者查配置了,好久没有用 java,都记不起来了。

#3 楼 @quakewang 可以了 多谢!

线上环境也修好了

最近我尝试 elasticsearch 用起来比 solr 简单许多 http://www.elasticsearch.org

#6 楼 @huacnlee 啊?elasticsearch 简单吗?我感觉用起来好复杂,github 在用这个,不过 github 的搜索结果真不咋样。

#7 楼 @hooopo elasticsearch 自带中文分词,另外同音字处理也比较简单,只是 tire 这个 gem 没有 sunspot 这个完善。 我那个 720p.so 为了节省内存,都把 redis-search 缓存 elasticsearch 了

#8 楼 @huacnlee solr 的社区大一些,elastic 需要自己去建分片和 mapping 吧。自带中文分词以前没注意到。

org.apache.solr.common.SolrException: Unknown fieldtype 'text' specified on field *_text

11 楼 已删除

title 里面的词汇使用 or 关系,body 使用 and 关系,title 和 body 之间使用 or 关系。然后 title 权重设置高一点。就能保证三条都搜索到,而且结果还挺好....

#9 楼 @hooopo elasticsearch 也可以不去建分片和 mapping 的。他又默认值。之所以提供那个选项,还是为了能让用户精准的控制自己的索引数据和结构类型。

#15 楼 @hooopo 其实不管从理念还是实现 ES 都是非常优秀的。我在开发类似应用的时候就参考了它的理念。只是简化了他的分布式处理,其他比如 json out|json in . RestFull 的 http 通信等都保留了。就目前对其 github (https://github.com/elasticsearch/elasticsearch) active 的观察,开发还是相当活跃的。而且开发者 kimchy 还是 compass 项目的开发者,在搜索领域算是非常有经验的一个人。

#16 楼 @WilliamZhu 解释的不错啊,看样子很有经验,呵呵,学习啦

需要 登录 后方可回复, 如果你还没有账号请 注册新账号