問題タブ [oracle-text]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - CONTAINS 関数の Oracle Text バインド変数。null 値を処理するには?
Oracle Textによるテーブルの全文検索を使用して、Oracle Apexでアプリケーションを開発しています。アプリケーションには次のようなクエリがあります。
この場合、ドメイン インデックスを使用するため :P5 が null でない場合、テキスト インデックスは正常に機能します。
しかし、:P5 に検索文字列が入力されていない場合に、:P5 で null を処理するようにクエリを変更する方法がわかりません。このクエリを試してみました
残念ながら、この場合、パフォーマンスは劇的に低下します。CONTAINS 関数で null 値を処理する方法はありますか?
oracle - Oracle コンテキスト インデックス: dblink では機能しません
2 つの db があり、db1 にはフィールド a によるコンテキスト インデックスを持つテーブル test_table があります。クエリ:
db1 で正常に動作します。しかし、他のデータベースから dblink を介して同じクエリを実行しようとすると:
次のエラーが表示されます。
ora-20000: Oracle Text エラー: DRG-10599: 列に索引が付けられていません
oracle - 'not contains' を指定した Oracle Text は非常に遅い
何百万ものレコードを含むテーブルがあり、Oracle Text は完璧に機能します。
select * from table1 where contains(col1, 'some text') > 0
しかし、追加not
すると非常に遅くなります。
select * from table1 where contains(col1, 'some text') > 0 and (not contains(col1, 'some text') > 0)
また
select * from table1 where contains(col1, 'some text') > 0 and (
contains(col1, 'some text') = 0)
最初の直接クエリは数分の 1 秒で実行され、2 回目は数分かかります。
これに対する解決策はありますか?
oracle - Oracle 12c 全文索引の保守
Oracle 12c の標準版では、全文検索にコンテキスト インデックスを使用する予定です。
検索が実行されるデータは、1 つのチャネル投稿と、データベースに読み込まれるサードパーティ ツールからの返信を含む JSON です (基本的に、すべてのチャットと返信 (タイムスタンプ/ユーザーなどの他の属性を含む) は、この表)。
年間約 50,000 行のデータと、1 日あたり 100 ~ 150 の DML が予想されます。現在、インデックスは「SYNC ON COMMIT」ですが、Oracle Text インデックスを最適化するための推奨事項は何ですか?
sql - 節 definecore oracle テキストで 2 つの列を使用する方法
私はこのコードを持っています:
ご覧のとおり、私は 2 つの異なるテーブルで選択を行っていますが、うまく機能しなかったため、標準スコアを変更する必要があります。この「DEFINESCORE (query_term、scoring_expression)」形式の DEFINESCORE 句を使用しようとしています。
この句内でテーブル列を呼び出すにはどうすればよいですか? つまり、検索を行うドキュメントがいくつかあるため、"query_term" ではなく自分の列を呼び出す必要があります。私が彼を呼んでいるように、彼は正確にql.titleという用語を探しているからです
この問題を解決するための提案はありますか?
sql - 索引の作成時にOracle TextでBase_Letter設定が使用される
私のデータベースには商品名があります。アクセントを区別しないように、これを検索できるようにする必要があります。つまり、'Dorthey' を検索しても 'Dórthéy' が返されます。
すでに Oracle Text 索引を作成しています。アクセント付きの文字をベース文字に変換するための設定は base_letter と呼ばれ、オンにする必要があります。
このようにインデックスが作成されます。
インデックスを作成するときにこの設定をオンにする必要がありますか? また、その方法は? または、base_letter 設定が別の場所でオンになっていますか?
どんな助けにも感謝します!
sql - Oracle Text CONTEXT 索引を使用して BLOB のあいまい検索を行う方法はありますか?
テーブル内の BLOB の内容を検索する検索機能を作成しようとしています。ベースラインとしてこのリンクをたどっています: https://oracle-base.com/articles/9i/full-text-indexing-using-oracle-text-9i
次のテーブルがあり、BLOB が内部にある行がいくつかあります。
私がやったことは次のとおりです。
- CONTEXT 型のインデックスを作成しました
- その後、次のような単純な検索を使用してテーブルをクエリします。
どちらが機能し、これを Oracle APEX アプリに統合しました。
ただし、検索機能は非常に厳密で、正確な単語や文章が必要です。ユーザーは、検索する単語にもっと寛大さを求めているのではないかと思います。解決策を見つけるために、あいまい検索に関して検索しました。検索すると、次のリンクが表示されます。
https://docs.oracle.com/cd/B13789_01/text.101/b10730/cqoper.htm
これにより、次のクエリを試すようになりました。
ファジー関数は BLOB ではなくテキスト列で機能するように見えるため、これに間違った方法でアプローチした可能性があることを認識しています。これを行う適切な方法(または他のアプローチ)はありますか?
前もって感謝します。
oracle - Oracle Text は単語を 64 CHARS に切り捨てますが、トークンの制限は 64 BYTES です
私はOracle 19cを使用しています。
Oracle Text を使用して全文索引を作成する VARCHAR2(4000) 列を含む表があります。
インデックスを作成するSQLは次のとおりです。
すべてうまく機能しますが、64 文字を超える単語があると、エラーが発生します。
私はドキュメントを調べましたが、この制限への唯一の参照は次の項目です: 2.14 Oracle Text インデックスのトークン制限
いくつかの調査の後、おそらくOracle-Textの内部関数が単語を 64 CHARSに切り捨てていることに気付きましたが、トークンの制限は 64 BYTESです。
このエラーの原因となっているテキスト ワードには、最初の 64 文字内に ç ã õ é などの発音区別文字が含まれています。各文字のサイズは 2 バイトです。
私はNLS_LENGTH_SEMANTICS=BYTE
成功せずに設定しようとしました。
私が調査した限り、インデックス トークンのサイズを変更する方法はありません。
編集:の結果SELECT * FROM v$nls_parameters
は次のとおりです。