某个表有title、content两个列,都已经建好了bm25索引,想在同一个sql里同时索引查询它们。
按网上的例子:
SELECT *,
(title <&> ‘关键词’)*2 + (content <&> ‘关键词’) AS weighted_score
FROM multi_text_table
ORDER BY weighted_score DESC;
无法查询。
请问各位,正确的查询sql如何写,谢谢。
某个表有title、content两个列,都已经建好了bm25索引,想在同一个sql里同时索引查询它们。
按网上的例子:
SELECT *,
(title <&> ‘关键词’)*2 + (content <&> ‘关键词’) AS weighted_score
FROM multi_text_table
ORDER BY weighted_score DESC;
无法查询。
请问各位,正确的查询sql如何写,谢谢。
类似这种:
~~~
WITH title_scores AS (
SELECT id, title <&> ‘关键词’ AS title_score
FROM multi_text_table
ORDER BY title <&> ‘关键词’ DESC
LIMIT 200
),
content_scores AS (
SELECT id, content <&> ‘关键词’ AS content_score
FROM multi_text_table
ORDER BY content <&> ‘关键词’ DESC
LIMIT 200
)
SELECT t.id, t.title, t.content,
COALESCE(ts.title_score, 0) * 2 + COALESCE(cs.content_score, 0) AS weighted_score
FROM multi_text_table t
FULL JOIN title_scores ts ON ts.id = t.id
FULL JOIN content_scores cs ON cs.id = t.id
ORDER BY weighted_score DESC
LIMIT 100;
~~~
好的,拿去试试。多谢你的帮助
问题解决了吗
还没上程序调试。多谢你的指点。以后调试运行遇到问题再来请教各位。
这段时间在学习linux C++,以前都是是搞windows. 转到linux一时还不熟悉。
好的