Я создал хранилище данных с несколькими столбцами в таблице, которое позволяет мне выполнять полнотекстовую индексацию таблицы. Что мне нужно сделать, так это оценить каждый столбец по-разному и сложить оценки вместе.
Следующий запрос работает, но медленно:
SELECT document.*, Score(1) + 2*Score(2) as Score
FROM document
WHERE (CONTAINS(documentContent, 'the_keyword', 1) > 0
OR CONTAINS(documentTitle, 'the_keyword', 2) > 0 )
ORDER BY Score DESC
После недолгих поисков, люди предложили решение как:
SELECT document.*, Score(1) as Score
FROM document
WHERE CONTAINS(dummy, '(((the_keyword) within documentTitle))*2 OR ((the_keyword) within documentText)',1) > 0)
ORDER BY Score Desc
Вышеуказанный запрос выполняется быстрее, чем его предшественник, но он не решает актуальную проблему. В этом случае, если ключевое слово найдено в documentTitle, оно не будет искать documentText (оно использует оператор OR). Что мне действительно нужно, так это ДОБАВИТЬ две оценки вместе, чтобы, если ключевое слово появилось в заголовке И текст, оно получило более высокую оценку, чем если бы оно появилось только в заголовке.
Итак, как вы добавляете баллы для взвешенных столбцов в одном предложении CONTAINS?