我在表格上創建了一個多列數據存儲,允許我在表格上進行全文索引。我需要做的是加重每一列的不同並將分數加在一起。如何在oracle文本索引中添加權重?
下面的查詢工作,但速度很慢:
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子句中添加加權列的分數?
這個答案很完美。我雖然只能一起累積術語,而不是權重。 – larf311 2008-11-05 13:06:36