Oracle文本花括号行为

时间:2012-10-22 18:53:28

标签: oracle search nlp oracle-text

我正在使用oracle文本在搜索栏中进行预读(根据规范编写者)。

基本上,用户可以开始输入文字,我们会在建议栏中填写可能的匹配项。

我尝试使用oracle文本,并遇到了一些问题,最新的问题是:

表包含answertext的这个条目:...我们提供了许多定价选项......

SELECT
    questiontext as qtext,
   answertext as text,
   questionid FROM question
   WHERE contains(answertext, '{pric}', 1) > 0

;

此查询不返回任何内容。但使用{pricing}会返回正确的结果。

并建议为什么会发生这种情况会很棒!

编辑:只想添加使用词干对我来说不起作用,因为用户想要区分“报告”和“报告”,他们希望突出显示匹配的子字符串,如果我能找到子字符串就可以完成在返回的结果中。

编辑2:我猜测,oracle使用索引中的某种词边界对每个单词进行标记,因此没有任何通配符,它​​会查找等于='pric'的标记,因此找不到它(因为有一个代币'定价')。所以,如果这个猜测是正确的,我很乐意,如果有人可以为我如何使上面的查询与示例条目一起工作,同时仍然保持空白,那么如果键入'定价选项'它应该返回但是如果我输入'很多选项'它不应该......

1 个答案:

答案 0 :(得分:2)

CONTAINS运算符支持wildcards和模糊文本搜索。尝试:

SELECT * FROM question WHERE contains(answertext, '{pric%}', 1) > 0;

SELECT * FROM question WHERE contains(answertext, 'fuzzy({pric})', 1) > 0;

fuzzy "prize"也符合您的搜索条件。

要突出显示找到的子字符串,您可以使用CTX_DOC.MARKUP