Oracle全文检索方面的研究(全1)(2)
--继续插入数据
Insert into docs values(4, <html>los angeles is a city in california.</html>);
Insert into docs values(5, <html>mexico city is big.</html>);
commit;
Select id, text from docs where contains(text, city) > 0;--新插入的数据没有查询到
id text
--------------------------------------------
2 <html>paris is a city in france.</html>
--索引同步
begin
ctx_ddl.sync_index(idx_docs, 2m); --使用2M同步索引
end;
--查询
Column text format a50;
Select id, text from docs where contains(text, city) > 0; --查到数据
id text
-----------------------------------------------
5 <html>mexico city is big.</html>
4 <html>los angeles is a city in california.</html>
2 <html>paris is a city in france.</html>
-- or 操作符
Select id, text from docs where contains(text, city or state ) > 0;
--and 操作符
Select id, text from docs where contains(text, city and state ) > 0;
或是
Select id, text from docs where contains(text, city state ) > 0;
--score 表示得分,分值越高,表示查到的数据越精确
SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, oracle, 1) > 0;
Context 类型的索引不会自动同步,这需要在进行Dml 后,需要手工同步索引。与context 索引相对于的查询操作符为contains
2.2 Ctxcat 索引
用在多列混合查询中
Ctxcat 可以利用index set 建立一个索引集,把一些经常与ctxcat 查询组合使用的查询列添加到索引集中。比如你在查询一个商品名时,还需要查询生产日期,价格,描述等,你可可以将这些列添加到索引集中。oracle 将这些查询封装到catsearch 操作中,从而提高全文索引的效率。在一些实时性要求较高的交易上,context 的索引不能自动同步显然是个问题,ctxcat则会自动同步索引
例子:
Create table auction(Item_id number,Title varchar2(100),Category_id number,Price number,Bid_close date);
Insert into auction values(1, nikon camera, 1, 400, 24-oct-2002);
Insert into auction values(2, olympus camera, 1, 300, 25-oct-2002);
Insert into auction values(3, pentax camera, 1, 200, 26-oct-2002);
Insert into auction values(4, canon camera, 1, 250, 27-oct-2002);
Commit;
/
--确定你的查询条件(很重要)
--Determine that all queries search the title column for item descriptions
--建立索引集
begin
ctx_ddl.create_index_set(auction_iset);
ctx_ddl.add_index(auction_iset,price); /* sub-index a*/
end;
--建立索引
Create index auction_titlex on auction(title) indextype is ctxsys.ctxcat
parameters (index set auction_iset);
Column title format a40;
Select title, price from auction where catsearch(title, camera, order by price)> 0;
Title price
--------------- ----------
相关新闻>>
- 发表评论
-
- 最新评论 更多>>