1

私はオラクルのテキストを使用して、検索バーで先読みを行っています (スペック ライターによると)。

基本的に、ユーザーがテキストの入力を開始すると、候補バーに一致する可能性のあるものが表示されます。

これにOracleテキストを使用してみましたが、いくつかの問題に遭遇しました。最新のものは次のとおりです。

表には、回答テキストのエントリが含まれています: ... 多くの価格設定オプションを提供しています ...

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

;

このクエリは何も返しません。ただし、{pricing} を使用すると正しい結果が返されます。

そして、なぜこれが起こっているのかという提案は素晴らしいでしょう!

編集:ユーザーが「レポート」と「レポート」を区別したいので、ステミングを使用してもうまくいかないことを追加したかっただけで、一致する部分文字列を強調表示したいので、返された文字列の中から部分文字列を見つけることができれば実行できます結果。

編集 2: 私は、オラクルがインデックス内の何らかの単語境界を使用して各単語をトークン化すると推測しています。したがって、ワイルドカードがないと、= '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;

ただしfuzzy "prize"、検索条件にも一致します。

見つかった部分文字列を強調表示するには、 を使用できますCTX_DOC.MARKUP

于 2012-11-01T20:48:54.203 に答える