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
上面三个链接,只有最后一个能搜出结果。我觉得第三个链接能搜出内容,在后面随便加一个词也是能搜出内容的,这样理解对么?
试试看将 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,都记不起来了。
org.apache.solr.common.SolrException: Unknown fieldtype 'text' specified on field *_text
title 里面的词汇使用 or 关系,body 使用 and 关系,title 和 body 之间使用 or 关系。然后 title 权重设置高一点。就能保证三条都搜索到,而且结果还挺好....
#13 楼 @WilliamZhu foursquare 从 mongodb 到 solr,最后迁移到 elasticsearch:http://engineering.foursquare.com/2012/08/09/foursquare-now-uses-elastic-search-and-on-a-related-note-slashem-also-works-with-elastic-search/
#15 楼 @hooopo 其实不管从理念还是实现 ES 都是非常优秀的。我在开发类似应用的时候就参考了它的理念。只是简化了他的分布式处理,其他比如 json out|json in . RestFull 的 http 通信等都保留了。就目前对其 github (https://github.com/elasticsearch/elasticsearch) active 的观察,开发还是相当活跃的。而且开发者 kimchy 还是 compass 项目的开发者,在搜索领域算是非常有经验的一个人。