【问题标题】:Converting from Thinking Sphinx to Solr Sunspot从 Thinking Sphinx 转换为 Solr 太阳黑子
【发布时间】:2011-12-08 04:41:05
【问题描述】:

由于几个原因,我们正在从 Thinking Sphinx 转换为 Sunspot。我必须重写搜索逻辑,但是我不确定如何转换以下内容:

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

# Thinking Sphinx

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

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

【问题讨论】:

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


    【解决方案1】:

    太阳黑子中的最小匹配

    并非所有关键字都需要存在才能使对象匹配

    在 Solr 中,这是“最小应该匹配”的概念。您可以查看之前的一些答案、我的一篇博客文章以及有关该主题的 Solr wiki 文档:

    与您在上面编写的类似查询可能如下所示...

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

    停用词

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

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

    (默认情况下,Sunspot 配置实际上应该附带一个示例 stopwords.txt 文件。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多