暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 像搜索一样模拟 “谷歌”

ASKTOM 2020-01-22
278

问题描述

在其中一个数据库中,我们有课程列表、描述、大纲、...
我们想实现像搜索一样的 “谷歌”

(即)

a) 如果我键入关键字 “数据”,它会查找数据库,数据挖掘,大数据...

b) 如果我键入诸如 “Project Mgmt” 之类的关键字,则它应自动将标准更正为 “Project Management”...
有点知识搜索

看起来,Oracle Text无法做到这一点。
请让我知道我可以使用什么技术/算法来实现这一点,如果可能的话。

谢谢

专家解答

对于 (a),文本搜索 * 可以 * 这样做。这几乎就是我们在AskTOM上用来提供搜索的东西。

我们希望在构成问题,答案和评论的 “所有” 文本列中建立索引。所以我们有一个程序来做到这一点:

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论