У меня есть следующие таблицы:
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)
Нужны левые внешние объединения, потому что заголовок или абзац может иметь поискterm.
Проблема в том, что чем больше абзацев, тем выше их баллы, хотя заголовок должен быть взвешен выше.
Каков наилучший способ исправить это?