ファジー テキスト マッチングに postgreSQL を使い始めたところです。と の 2 つの列がjob_title
ありcompany_name
ます。
典型的な全文検索は、 と を連結job_title
しcompany_name
、単一のランキングに従って検索テキスト結果を返します。
ただし、私の場合、2 つの列でテキストの一致を同等に扱うことは問題になる可能性があります。たとえば、Search Engineer
atはatGoogle Co.
と同等にランク付けされるべきではありませんGoogle Search
Engineer Co.
各列に異なる重みを割り当てることができることを知っています。ただし、どちらかを重視する理由はありません。
キーワードを各列に対して個別に照合し、各キーワードの「一致スコア」を返すにはどうすればよいですか?
何かのようなもの:
Jobs.where("(to_tsvector('english', position) @@ plainto_tsquery(:q)) AND
(to_tsvector('english',company) @@ plainto_tsquery(:q))", q: "Search Engineer", q: "Google")