1

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

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

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

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

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

;

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

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

编辑:只是想补充一点,使用词干对我不起作用,因为用户想要区分“报告”和“报告”,并且他们希望突出显示匹配的子字符串,如果我可以在返回的子字符串中找到该子字符串,则可以这样做结果。

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

4

1 回答 1

2

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

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

或者

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

但 withfuzzy "prize"也会匹配您的搜索条件。

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

于 2012-11-01T20:48:54.203 回答