【发布时间】:2013-05-24 12:15:17
【问题描述】:
我有一个使用 Oracle Text 索引的多列数据存储,并且我正在使用 Contains 关键字运行查询。
为了对不同的列进行不同的加权,我按照以下步骤进行操作。
如果用户搜索“horrible”,则向 oracle 发出的查询将如下所示:
WHERE CONTAINS(indexname,
'((horrible WITHIN column1) * 3)
OR ((horrible WITHIN column2) * 2))') > 1
但是要添加一个也被索引的类别过滤器,我这样做:
WHERE CONTAINS(indexname,
'((horrible WITHIN Column1) * 3)
OR ((horrible WITHIN Column2) * 2))
AND (movie WITHIN CategoryColumn)', 1) > 1
这会按类别过滤,但这会完全打乱评分,因为 Oracle 文本会从 AND 关键字的任何一侧获得最低分。 相反,我想指示 oracle 忽略 AND 的右侧。
有没有办法让查询的这个特定部分被评分忽略?
基本上我是想按照分数来打分的
(horrible WITHIN Column1) * 3
OR (horrible WITHIN Column2) * 2)
但我想根据
'((horrible WITHIN Column1) * 3)
OR ((horrible WITHIN Column2) * 2))
AND (movie WITHIN CategoryColumn)'
【问题讨论】:
标签: oracle10g scoring oracle-text weighting