我正在使用oracle文本在搜索栏中进行预读(根据规范编写者)。
基本上,用户可以开始输入文字,我们会在建议栏中填写可能的匹配项。
我尝试使用oracle文本,并遇到了一些问题,最新的问题是:
表包含answertext的这个条目:...我们提供了许多定价选项......
SELECT
questiontext as qtext,
answertext as text,
questionid FROM question
WHERE contains(answertext, '{pric}', 1) > 0
;
此查询不返回任何内容。但使用{pricing}会返回正确的结果。
并建议为什么会发生这种情况会很棒!
编辑:只想添加使用词干对我来说不起作用,因为用户想要区分“报告”和“报告”,他们希望突出显示匹配的子字符串,如果我能找到子字符串就可以完成在返回的结果中。
编辑2:我猜测,oracle使用索引中的某种词边界对每个单词进行标记,因此没有任何通配符,它会查找等于='pric'的标记,因此找不到它(因为有一个代币'定价')。所以,如果这个猜测是正确的,我很乐意,如果有人可以为我如何使上面的查询与示例条目一起工作,同时仍然保持空白,那么如果键入'定价选项'它应该返回但是如果我输入'很多选项'它不应该......
答案 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
。