我有以下表格:
create table records
(
record_id int primary key,
title varchar(250)
);
create table paragraphs
(
record_id int primary key,
paragraph varchar(4000)
)
记录可能包含1个或多个段落。标题和段落都是全文搜索索引。标题的加权应高于段落(用户输入)。
我的查询如下:
select tbl1.*, tbl2.score as title_score, tbl3.score as paragraph_score from records tbl1
left outer join
(
select score(1) as score from recordswhere contains(title, 'test*5', 1) > 0
) tbl2 on tbl2.record_id = tbl1.record_id
left outer join
(
select sum(score(1)) as score from paragraphs where contains(paragraph, 'test*2', 1) > 0 group by record_id
) tbl3 on tbl3.record_id = tbl1.record_id
where (tbl2.score > 0 OR tbl3.score > 0)
需要左外部联接,因为标题或段落可以包含搜索词。
问题在于,即使标题越多,得分越高 应该加权更高。
解决此问题的最佳方法是什么?
答案 0 :(得分:0)
如果您想修改Oracle Text分数结果的方式,您应该查看Alternative and User-Defined Scoring。这将为您在一个地方为应用程序的所有部分提供不同的评分,而不是强迫您在应用程序的所有不同区域维护此修改后的评分。