我刚开始使用postgreSQL进行模糊文本匹配。我有两列:job_title
和company_name
。用PostgreSQL在多列中进行全文搜索
典型的全文搜索将连接job_title
和company_name
,然后根据单个排名返回搜索文本结果。
然而,在两列处理文本匹配同样可以在我的情况的问题。例如,Search Engineer
在Google 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")
谢谢丹尼斯的优秀答案! – AdamNYC