Ecto不允许片段参数进行mysql全文搜索

时间:2017-10-11 22:41:33

标签: mysql elixir phoenix-framework ecto

我正在尝试使用片段在ecto中实现全文搜索。但是,它会抛出一个错误,它不允许我将该参数用于搜索词。

  对于查询%Mariaex.Query

参数的长度必须为1

ZB.Repo.all(
  from contact in ZB.Contact,
  where: contact.account_id == ^account_id,
  where: fragment("MATCH (name,email,phone,address_1,city,state,postal_code) AGAINST ('?*' IN BOOLEAN MODE)", ^search_term)
)

1 个答案:

答案 0 :(得分:4)

?中的

fragment不是纯字符串替换。您需要在片段SQL之外附加*,并且片段SQL应该只有(? IN BOOLEAN MODE)

变化:

fragment("... AGAINST ('?*' IN BOOLEAN MODE)", ^search_term)

要:

fragment("... AGAINST (? IN BOOLEAN MODE)", ^(search_term <> "*"))