私はectoのようなクエリを次のように動作させようとしています:
def find(searchterm) do
query = from c in Contact,
#where: fragment("? % ?", c.company_name, ^searchterm),
where: like(c.company_name, ^searchterm),
contacts = Repo.all(query)
{:ok, contacts}
end
私のテーブルには、company_name「Asymptote」があります。where: like/2 を使用すると、クエリは次のようになります。
SELECT c0."id", c0."company_id", c0."company_name" FROM "contacts" AS c0 WHERE (c0."company_name" LIKE $1) ["Asym"] (1.0ms)
pg_trm 検索のコメントを外すと、次のようになります。
SELECT c0."id", c0."company_id", c0."company_name" FROM "contacts" AS c0 WHERE (c0."company_name" % $1) ["Asym"] (1.0ms)
私が見る限り、クエリは問題ないように見えますが、結果はありません。データベースに "Asymptote" を追加した後にインデックスを追加したので、それが pg_trm インデックスに見つからない理由だと思いますが、like/2 または ilike/2 が機能しないのはなぜですか? 「Asymptote」というフルネームで入力すると、レコードを見つけることができます。