从思维狮身人面像转换为索尔太阳黑子

时间:2011-12-08 04:41:06

标签: ruby-on-rails sphinx thinking-sphinx sunspot sunspot-rails

由于一些原因,我们正在从思维狮身人面像转换为太阳黑子。我必须重写搜索逻辑,但我不确定如何转换以下内容:

我想将搜索转换为:任意太阳黑子。这意味着并非所有关键字都必须存在才能使对象匹配。 (任何关键字都可以,并且将按相关性排序)。但是我在Sunspot文档中找不到它。

# Thinking Sphinx

search_result = Business.search([attributes[:name],attributes[:address]], match_mode: :any)

我也在寻找一种方法,通过Sunspot轻松添加停用词到Solr。 Thinking Sphinx提供了一种在yml中指定它的方法。但是在Sunspot :: Rails yml中没有等效的东西。

1 个答案:

答案 0 :(得分:2)

太阳黑子中的最小匹配

  

并非所有关键字都必须存在才能使对象成为匹配

在Solr中,这是“最小匹配”概念。你可以看到一些以前的答案,我的博客文章,以及关于该主题的Solr wiki文档:

对上面所写内容的类似查询可能如下所示......

@search = Business.search do
  fulltext query_string, :minimum_match => 0
end
@businesses = @search.results

停用词

对于停用词,我可能会首先建议您使用它们。 Solr的DisMax算法应该做足够的工作,忽略常用术语以排序结果。我唯一真正需要停用词的时候是通过在文本字段上进行分词来生成单词云。

因此,如果确实需要停用词,请将StopFilterFactory添加到文本字段的analyzer块中。在stopwords.txt目录(与solr/conf相同的目录)中创建相应的schema.xml文件。

(默认情况下,太阳黑子配置应该附带一个样本stopwords.txt文件。)