1

私は Web アプリを設計しており、全文検索を実行できる検索ページがあります (関心のあるテキスト列に CONTEXT インデックスを作成しました)。Oracleでは、全文検索を実行して結果を返すCONTAINS クエリを実行できます。これは、次のような予約文字を入力する場合を除いて、優れています。

「氷* AND 場所 AND アラスカ」

「ice」の後に「*」を置くと、Oracle エラーが発生します。つまり、

ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:

これを回避する最も適切な方法は何ですか - 予約文字とキーワードを除外できることは知っていますが、もっとエレガントな方法があると思います。あなたがそのようなことを知っているなら、私は本当に知りたいです:-)


注: 以下は、Oracle テキスト検索を実行するコードです。目を見張るものはありません。

 OracleCommand cmd = new OracleCommand("SELECT ref_id, title, table_name, description FROM v_all_media WHERE CONTAINS (title, :pTitle) > 0", conn);
 cmd.Parameters.Add("pTitle", title);
 OracleDataReader reader = cmd.ExecuteReader();
4

1 に答える 1

0

{}

中括弧を使用して、文字または記号の文字列をエスケープします。エスケープ シーケンスの一部と見なされる一連の中かっこ内のすべて。

中かっこを使用して 1 文字をエスケープすると、エスケープされた文字はクエリ内の個別のトークンになります。

\

バックスラッシュ文字を使用して、単一の文字または記号をエスケープします。バックスラッシュの直後の文字だけがエスケープされます。

クエリの特殊文字を参照してください

于 2013-02-16T19:12:49.473 に答える