全文加权

时间:2011-11-16 20:46:04

标签: oracle full-text-search

我有以下表格:

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)

需要左外部联接,因为标题或段落可以包含搜索词。

问题在于,即使标题越多,得分越高 应该加权更高。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您想修改Oracle Text分数结果的方式,您应该查看Alternative and User-Defined Scoring。这将为您在一个地方为应用程序的所有部分提供不同的评分,而不是强迫您在应用程序的所有不同区域维护此修改后的评分。