1

在我的 Java Web 应用程序中,想要放置“全局搜索”文本框,该文本框将使用“Oracle Text”搜索多个表(不同的列)?

例如

表学生 {name}

表老师 {name}

表部门{名称,描述}

表主题{名称,标题}

现在我想做的是,如果用户输入“Chem”,则应针对 Student:name、Teacher:name、Department:name、Department:description、Subject:name、Subject:title 列搜索这个词,然后它会排序根据其 Oracle Text Score 的结果?

谁能建议实现这一目标的最佳方法是什么?不确定如何使用“包含”oracle 文本函数通过单个查询在多个表中搜索所有这些列?

另外,请假设表之间没有关系。提前致谢!

4

3 回答 3

0

从您的表中创建一个视图,然后从中选择:

 SELECT * FROM your_view WHERE UPPER(name) Like Upper('Chem%'); -- or '%Chem%'
于 2013-02-20T14:00:44.770 回答
0

用户数据存储允许您将多个表粘合到一个虚拟文档中,Oracle Text 使用该文档进行索引和搜索。这将允许您有一个包含搜索多个表的子句。当您创建用户数据存储时,您定义了您希望索引的每个表中的列。

于 2014-06-06T11:47:01.523 回答
0

你可以这样做:

with search_fields as (
    select 'student' as table,
           'name' as field,
           name as text
       from student
    union all 
    select 'teacher' as table,
           'name'    as field,
           name as text
       from student 
    union all
    ...
)
select * from search_fields where text contains ...

如果您需要以某种方式链接回原始表,则可能需要添加此内容。

于 2013-02-20T12:17:16.393 回答