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

How to full text search more than one "model" field using Ecto and PostgreSQL

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

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、联系人等)。 怎么做?

您可以使用

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

连接文本搜索向量。