2
このクエリはPHPによって動的に生成されるため、このクエリを簡略化しようとしています。処理オーバーヘッドを減らしたいのですが(実際のクエリははるかに長くなりますが、同じだろう!)。PostgreSQLの簡略化エイリアスを使用したtsvectorとtsquery
SELECT title, type_name, ts_rank_cd(ARRAY[0.1,0.2,0.4,1.0],
setweight(to_tsvector(coalesce(title,'')), 'A')
||
setweight(to_tsvector(coalesce(type_name,'')), 'B')
,
to_tsquery('search & query'))
FROM TestView WHERE
setweight(to_tsvector(coalesce(title,'')), 'D')
||
setweight(to_tsvector(coalesce(type_name,'')), 'B')
@@
to_tsquery('search & query');
私はそれが2回指定する必要がないように、エイリアスのようなものを定義することによって、二回のtsqueryとのtsvectorを指定する必要性を減らすためにしようとしていますよ。このような何か(訂正しても、近い場合は失敗する、私はわからない!)
SELECT title, type_name, ts_rank_cd(ARRAY[0.1,0.2,0.4,1.0],
searchvector
,
searchquery
FROM TestView WHERE
setweight(to_tsvector(coalesce(title,'')), 'D')
||
setweight(to_tsvector(coalesce(type_name,'')), 'B') AS searchvector
@@
to_tsquery('search & query') AS searchquery;
これが可能であるか、私は2回だけそれをすべてを生成して立ち往生しています。
コンテキスト 'TestView'は、いくつかのテーブルから生成されたビューです。
ご迷惑をおかけして申し訳ありません。
おかげでそれはまだ失敗... ERROR:構文エラーがでたり近く LINE 7 "と":重量として... tweight(to_tsvector(合体(タイプ名、 ''))、 'B') 、 –
私はts_rank_cd()の呼び出しを誤解したと思います。新しいクエリを試してください。しかし、とにかく、それはあなたにこれに対処する方法を与える必要があります。 –
あなたの新しい編集でエラーが発生しました:関数ts_rank_cd(数値[])が存在しません。これは5行目の括弧が間違っていると思われますが、これを削除すると上記のエラーがスローされます。 ts_rank_cd paramsは、ランク配列、tsvector、tsqueryです。ご協力いただきありがとうございます。とても有難い。 –