(注意:这个问题是从 ServerFault 交叉发布的。)
我需要在我的 oracle 10g 数据库中的多个表中执行 oracle 文本搜索。这些表具有以下结构:
Table1 (ID, col1, col2, ...)
SubTable1 (ID, Table1ID, col1, col2, ...)
SubTable2 (ID, Table1ID, col1, col2, ...)
Table1 与 SubTable1 和 Subtable2 具有一对多的关系。
在运行时,客户端应用程序将提供搜索词以在三个表中进行搜索。只有任一表中包含搜索词的记录才应连接在一起并返回给客户端应用程序。
场景(简化示例)
如果 Table1 中的一条记录在 SubTable1 中有 10 条记录,但 10 条记录中只有 4 条包含搜索词,则应仅将 4 行返回给客户端应用程序。SubTable2 也是如此。
问题
有没有一种方法可以通过最少的更改来做到这一点,理想情况下只contains
在所有表中进行一次搜索?或者我真的需要contains
为每张桌子指定一个吗?
附加说明
- 我遵循了这一点,并尝试在 Table1 中创建一个虚拟文本索引列
User_Datastore
。存储过程用于从 XML 格式的所有表中检索和格式化所有相关数据。这不起作用,因为将返回 SubTable1(在场景中说明)中的所有 10 条记录。Table1 中的行与搜索词匹配,然后与 Subtable1 中的所有 10 行连接。