特定のタグを持つ投稿やキーワードと一致する投稿を選択したいとします。私は異なるWHERE句から取得した結果をランク付けできますか?
select t1.*
from (
select p.*, count(p.id) from plainto_tsquery('hElLo') AS q , post p
left join post_tag pt on pt.post_id = p.id
left join tag t on t.id = pt.tag_id
WHERE (tsv @@ q) or t.id in (2,3)
group by p.id
) as t1
order by count desc, ts_rank_cd(t1.tsv, plainto_tsquery('hElLo')) desc
limit 5;
上記は私が望むものを選択します。 tsv
には、私はtitle
重量とdescription
重量を与えました。 count
でソートすると、それぞれのエントリの重みが同じであるため、現在は無意味になります。この行がt.id in (2,3)
から選択された場合、最初にソートされ、次にts_rank_cd
でソートされたり、各一致タグに「A」加重、タイトルがB加重となり、説明がDですか?
これは私が探しているが、Postgresはtでグループに私を求めているものに近いように思われます。 idも。これはdup行を作成します – user1865027
実際に私たちがアーカイブする目標に重大なエラーがあります。 Plzは編集された答えを試してみてください。 – ninjarails
あなたは私の命の恩人です!どうもありがとうございます。今私はこれを実装して休止状態にする方法について苦労する必要があります – user1865027