如何全文搜索多个"模型"使用Ecto和PostgreSQL的字段

时间:2016-10-04 10:10:48

标签: postgresql elixir phoenix-framework ecto

我在我的控制器中使用此搜索功能:

def search(query, search_term) do
    (from u in query,
    where: fragment("to_tsvector(?) @@ plainto_tsquery(?)", u.name, ^search_term),
    order_by: fragment("ts_rank(to_tsvector(?), plainto_tsquery(?)) DESC", u.name, ^search_term))
  end

它只适用于我模特的一个领域。我想搜索所有字段或能够同时搜索选定的几个(name_label,contacts,...)。 怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用

(to_tsvector(col1) || to_tsvector(col2))) @@ plainto_tsquery(?)

连接文本搜索向量。