2

多种类型的太阳黑子搜索与单一类型的优缺点是什么?首选方式是什么?

我浏览了很多文档,似乎找不到答案。

多类型搜索示例:

Sunspot.search(Post, Comment) do
  with :blog_id, 1
  fulltext 'hello' do
    fields(:comment_body)
  end
end

与另一个模型/类型关联的单一类型搜索示例:

class Post < ActiveRecord::Base
  searchable do
    text :comments do
      comments.map { |comment| comment.body }
    end
end

Post.search do
  fulltext 'hello' do
    fields(:comments)
  end
end

看来我可以使用任何一种方法(多种类型或单一类型)来获得相同的结果。

4

1 回答 1

2

在沿着多类型搜索的道路前进之后,让我们看看我是否可以为我的问题提供一些答案。

多类型搜索的缺点

  • 大多数人想要返回的是要显示的结果/点击的同质列表。当您执行默认搜索所有类型的 Sunspot.search(Type1, Type2, etc) 或 Sunspot.search 时,调用 .results 会获得混合的数据类型,这使得在视图中更难显示。
  • 如果 Post 有很多评论,并且我想查找评论中包含“xyz”的帖子,那么 Sunspot.search(Comment).results 将返回评论列表,而不是我真正想要的帖子列表。我可以使用评论结果/点击中的 post_id 来检索帖子列表,但这会影响性能。
  • 对多种类型执行 Sunspot.search.hits 以获取要显示到视图的公共字段列表更加困难。
  • 根据http://sunspot.github.com/sunspot/rails/docs/index.html,“Sunspot 完全不知道搜索是否针对一种或多种类型;唯一的限制是用于限制、排序等的列. 对所有被搜索的类型都以相同的方式定义。” 必须为所有类型定义相同的列。

因此,具有关联和映射到多个模型的单一类型搜索,没有任何这些问题并且可以轻松返回相同的结果,恕我直言。

于 2012-10-16T20:58:53.150 回答