1

我正在将 oracle 文本用于阿拉伯语。

我想将同义词列表保存在数据库表中,因此从该表中读取域索引,知道吗?

4

1 回答 1

1

我找到了一个解决方案:

1-我将同义词列表上传到名为 words 的表(包含所有术语及其同义词的 ID)和名为 synset 的主表(包含同义词)

2-创建词库:

begin
  ctx_thes.create_thesaurus ('MyThesaurus');
end;

3-创建一个存储过程以从我的表 [words] 中读取并创建同义词之间的关系:

create or replace procedure CreateSynonyms is
  CURSOR syn_cur is    select s.name_abstract,w.root,w.word_abstract 
  from p words  w , synset s 
  where w.synset_id=s.synset_id and w.root<>s.name_abstract and w.word_abstract<> s.name_abstract
  order by s.synset_id;
  syn_rec syn_cur%rowtype;
BEGIN
OPEN syn_cur;
LOOP
  FETCH syn_cur into syn_rec;
  EXIT WHEN syn_cur%notfound;
  begin
    ctx_thes.create_relation ('MyThesurus', syn_rec.name_abstract, 'syn', syn_rec.word_abstract);
  END LOOP;
END;

4-重写我的查询以选择同义词:

select  /*+ FIRST_ROWS(1)*/  sentence_id,score(1) as sc, isn  
          where contains(PROCESSED_TEXT,'<query>
<textquery>
   search for somthing here
 <progression>
 <seq><rewrite>transform((TOKENS,  "{", "}", ","))</rewrite></seq>
 <seq><rewrite>transform((TOKENS,  "syn(", ",listing)", " , "))</rewrite>/seq>
 </progression>
 </textquery>
 <score datatype="INTEGER" algorithm="COUNT"/></query>',1)>0 

希望这会对某人有所帮助

于 2015-04-28T08:36:02.223 回答