问题描述
在其中一个数据库中,我们有课程列表、描述、大纲、...
我们想实现像搜索一样的 “谷歌”
(即)
a) 如果我键入关键字 “数据”,它会查找数据库,数据挖掘,大数据...
b) 如果我键入诸如 “Project Mgmt” 之类的关键字,则它应自动将标准更正为 “Project Management”...
有点知识搜索
看起来,Oracle Text无法做到这一点。
请让我知道我可以使用什么技术/算法来实现这一点,如果可能的话。
谢谢
我们想实现像搜索一样的 “谷歌”
(即)
a) 如果我键入关键字 “数据”,它会查找数据库,数据挖掘,大数据...
b) 如果我键入诸如 “Project Mgmt” 之类的关键字,则它应自动将标准更正为 “Project Management”...
有点知识搜索
看起来,Oracle Text无法做到这一点。
请让我知道我可以使用什么技术/算法来实现这一点,如果可能的话。
谢谢
专家解答
对于 (a),文本搜索 * 可以 * 这样做。这几乎就是我们在AskTOM上用来提供搜索的东西。
我们希望在构成问题,答案和评论的 “所有” 文本列中建立索引。所以我们有一个程序来做到这一点:
然后,我们可以定义一个文本索引,该文本索引在 “列” 处使用该输出,以使文本索引基于
因此,即使在 “答案” 列上定义了索引,上述过程也意味着我们将收集所有其他信息以放入索引。
对于 (b)。不,我们不做 “自动更正”,但我们提供模糊搜索功能
https://docs.oracle.com/database/121/CCAPP/GUID-098F287A-DD02-42E1-B685-B1E4ED108FBA.htm
我们希望在构成问题,答案和评论的 “所有” 文本列中建立索引。所以我们有一个程序来做到这一点:
CREATE OR REPLACE PROCEDURE asktom.ate_question_idx
(rid in rowid, tlob in out nocopy clob)
is
begin
for c1 in (select q.subject, q.question, q.answer, q.id
from ate_submitted_questions q,
ate_admins a
where q.rowid = rid
and q.admin_id = a.id(+)
)
loop
tlob := tlob || c1.subject || ' ';
if c1.email is not null then
tlob := tlob || c1.email || ' ';
end if;
tlob := tlob || c1.question || ' ';
if c1.answer is not null and length(c1.answer) > 0
then
tlob := tlob || c1.answer || ' ';
end if;
for c2 in (select review_comments, followup_comments
from ate_question_reviews
where question_id = c1.id
order by created_on)
loop
if c2.review_comments is not null
then
tlob := tlob || c2.review_comments ||' ';
end if;
if c2.followup_comments is not null
then
tlob := tlob || c2.followup_comments ||' ';
end if;
end loop;
end if;
end loop;
end;
然后,我们可以定义一个文本索引,该文本索引在 “列” 处使用该输出,以使文本索引基于
begin
ctxsys.ctx_ddl.create_preference('ATE_SEARCH_IDX_DST','USER_DATASTORE');
ctxsys.ctx_ddl.set_attribute('ATE_SEARCH_IDX_DST','PROCEDURE','ASKTOM.ATE_QUESTION_IDX');
end;
/
create index ATE_SEARCH_IDX
on ATE_SUBMITTED_QUESTIONS(ANSWER)
indextype is ctxsys.context
parameters('
datastore ATE_SEARCH_IDX_DST
sync (every SYSDATE + 4/24 memory 67108864)
')
/
因此,即使在 “答案” 列上定义了索引,上述过程也意味着我们将收集所有其他信息以放入索引。
对于 (b)。不,我们不做 “自动更正”,但我们提供模糊搜索功能
https://docs.oracle.com/database/121/CCAPP/GUID-098F287A-DD02-42E1-B685-B1E4ED108FBA.htm
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




