在我的java web应用程序中想要使用“Oracle Text”来放置“全局搜索”文本框,该文本框将搜索多个表(不同列)?
e.g。
表学生{name}
表教师{name}
表部门{名称,描述}
表主题{name,title}
现在我想做的是,如果用户输入“Chem”,则应该针对Student:name,Teacher:name,Department:name,Department:description,Subject:name,Subject:title column and search它会根据Oracle Text Score对结果进行排序吗?
任何人都可以建议实现这一目标的最佳方法是什么?不确定如何使用“包含”oracle文本函数在单个查询中搜索多个表中的所有列?
另外,请假设表之间没有关系。提前谢谢!
答案 0 :(得分: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 ...
如果您需要以某种方式链接回原始表,则可能需要添加此内容。
答案 1 :(得分:0)
从表中创建一个视图,然后从中进行选择:
SELECT * FROM your_view WHERE UPPER(name) Like Upper('Chem%'); -- or '%Chem%'
答案 2 :(得分:0)
用户数据存储区允许您将多个表粘贴到一个虚拟文档中,Oracle Text使用该文档进行索引和搜索。这将允许您有一个包含子句来搜索多个表。创建用户数据存储区时,可以在每个要编制索引的表中定义列。