Ecto不允许用于全文搜索的片段参数
问题描述:
我试图在ecto中用片段实现全文搜索。但是,它抛出了一个错误,即它不允许我使用搜索项的参数。Ecto不允许用于全文搜索的片段参数
参数必须是长度为1的查询%Mariaex.Query
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)
)
答
在fragment
?
不是纯字符串替换。您需要在片段SQL外附加*
,并且片段SQL应该只有(? IN BOOLEAN MODE)
。
变化:
fragment("... AGAINST ('?*' IN BOOLEAN MODE)", ^search_term)
要:
fragment("... AGAINST (? IN BOOLEAN MODE)", ^(search_term <> "*"))
这是否工作:'片段(“MATCH(姓名,电子邮件,电话,ADDRESS_1,城市,州,POSTAL_CODE)反对(IN BOOLEAN? MODE)“,^(search_term ”*“))'? – Dogbert
是的,非常感谢!你可以添加一个答案 –