我有一个使用 Oracle Text 索引的多列数据存储,并且我正在使用 Contains 关键字运行查询。
为了对不同的列进行不同的加权,我进行如下操作。
如果用户搜索“可怕”,则向 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)'