【发布时间】:2016-01-23 19:28:44
【问题描述】:
首先我是 Oracle Text 的新手,所以请多多包涵。 我认为我的情况很容易管理,因为我必须在同一张表的两个字段上进行搜索,而这些字段很小。 看了一些文章,我觉得CTXCAT索引对我来说已经足够了,但是我不明白如何搜索部分单词;例如,如果我搜索“峰值”,我也希望返回“说话”之类的词。你能帮我理解一下吗?
【问题讨论】:
首先我是 Oracle Text 的新手,所以请多多包涵。 我认为我的情况很容易管理,因为我必须在同一张表的两个字段上进行搜索,而这些字段很小。 看了一些文章,我觉得CTXCAT索引对我来说已经足够了,但是我不明白如何搜索部分单词;例如,如果我搜索“峰值”,我也希望返回“说话”之类的词。你能帮我理解一下吗?
【问题讨论】:
请访问以下链接:
http://www.oracle.com/technetwork/testcontent/ctxcat-primer-090555.html
上述链接的部分内容如下。
我想查找所有包含“玩具”和“狗”字样但不包含“活体动物”的拍卖品:
SELECT item_id, item_desc
FROM auction WHERE CATSEARCH (item_desc, '(toy dog) | "live animal"', null) > 0;
注意几点:
- AND 条件不需要单词 AND 甚至“&”运算符。并且是 假设在任何相邻项之间。
- NOT 由“|”表示(或不 此处使用,用“|”表示)。
- 括号可用于分组 条款。
- 双引号用于将短语括起来(否则“live 动物”会被解读为“活生生的动物”。
上述查询中的“null”是结构化子句的占位符。没有默认值 - 如果您不提供任何结构化子句,您必须在此处输入“null”。 结构化子句允许您对结果进行限制或排序。如果我想扩展上面的查询,只查找价格低于 100 美元的商品,我可以使用
WHERE CATSEARCH (item_desc, '(toy dog) | "live animal"', 'price < 100') > 0
如果我首先想要最新项目的结果,我可以使用
WHERE CATSEARCH (item_desc, '(toy dog) | "live animal"',
'price < 100 order by start_time desc') > 0
【讨论】: