問題タブ [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.
oracle - CONTAINSを使用したOracle XML全文問合せ、とINPATH
<query>
構文と INPATH 式を使用してフルテキスト クエリの進行を組み合わせる方法を見つけるのに苦労しています。
次のコードを指定すると、Oracle は INPATH 式を無視します。
oracle - Oracleテキスト:インデックスの同期中に更新
毎晩同期される複雑なコンテキストインデックスがあります。このプロセスには約10分かかり、同期期間中にインデックス列に接触するこのテーブルの更新はORA-29861: domain index is marked LOADING/FAILED/UNUSABLE
例外になります-それについて何ができますか?
oracle - Oracle テキストの中括弧の動作
私はオラクルのテキストを使用して、検索バーで先読みを行っています (スペック ライターによると)。
基本的に、ユーザーがテキストの入力を開始すると、候補バーに一致する可能性のあるものが表示されます。
これにOracleテキストを使用してみましたが、いくつかの問題に遭遇しました。最新のものは次のとおりです。
表には、回答テキストのエントリが含まれています: ... 多くの価格設定オプションを提供しています ...
このクエリは何も返しません。ただし、{pricing} を使用すると正しい結果が返されます。
そして、なぜこれが起こっているのかという提案は素晴らしいでしょう!
編集:ユーザーが「レポート」と「レポート」を区別したいので、ステミングを使用してもうまくいかないことを追加したかっただけで、一致する部分文字列を強調表示したいので、返された文字列の中から部分文字列を見つけることができれば実行できます結果。
編集 2: 私は、オラクルがインデックス内の何らかの単語境界を使用して各単語をトークン化すると推測しています。したがって、ワイルドカードがないと、= 'pric' に等しいトークンが検索され、それが見つからないためです (トークン「価格」)。したがって、その推測が正しければ、空白を維持しながら上記のクエリを例のエントリで機能させる方法について誰かがチャイムを鳴らしてくれるとうれしいです。「価格オプション」と入力すると返されるはずですが、「多くのオプション」と入力するとそれはすべきではありません...
oracle - Oracleでコンマ区切りの値を持つ列を検索する
Web検索エンジンにOracle11gとOracleTextを使用しています。
Keywords
これで、スペースで区切られた単語を含むCLOB列を作成してテキストインデックスを作成しました。Oracle Textは、その列に1つ以上のキーワードが格納されている行を返すため、これにより検索を拡張できました。列の内容はユーザーには表示されず、検索を「拡張」するためにのみ使用されます。これは意図したとおりに機能しています。
しかし今、私は複数の単語や完全な文をサポートする必要があります。現在の構成では、OracleTextは個々のキーワードのみを検索します。フレーズを保存し、フレーズ全体を検索するようにOracle Textを構成するにはどうすればよいですか(完全一致が推奨されますが、あいまい一致も問題ありません)。
2行の列コンテンツの例(セミコロンで区切られた値):
同様の質問を見つけました。フリーテキスト検索機能を備えたOracle11gのソリューションが必要なことを除いて、カンマ区切りの値で列を検索しています。
可能な解決策:
1つ目の解決策:DBを次のように再設計することを考えていました。新しいテーブルを作りますKeywords(pkID NUMBER, nonUniqueID NUMBER, singlePhrase VARCHAR2(100 BYTE))
。そして、前の列Keyword
をに変更しますKeywordNonUniqueID
。これは、(値のリストではなく)IDを保持します。検索時に、新しいKeyword
テーブルを使用して内部結合します。このソリューションの問題は、フレーズを除いて同じデータを含む複数の行を取得することです。これでランキングが崩れると思いますか?
2番目の解決策:フレーズを元のKeyword
列にXMLとして格納し、どういうわけかOracle TextにXML内を検索するように指示することは可能ですか?
3番目の解決策:?
一般に、フレーズは多くない(100未満)ことも、長くなることもありません(1つのフレーズには最大5つの単語が含まれます)。
CONTAINS
また、全文検索のニーズに、現在、とその演算子のいくつかを使用していることにも注意してください。
編集:このhttps://forums.oracle.com/forums/thread.jspa?messageID=10791361ディスカッションは、私の問題をほぼ解決しますが、フレーズ全体ではなく、個々の単語にも一致します(完全一致)。
oracle - 「ORA-29909: 補助演算子のラベルはリテラル番号ではありません」をバインド変数で修正する方法は?
次のSQLは、Oracle Textの CONTEXT 索引付けされた列に対して実行されます:
結果:
ここで同様の問題についての言及が1つ見つかりました:
https://forums.oracle.com/forums/thread.jspa?threadID=91417
しかし、次のコマンドでカーソルを変更しても、私の場合は役に立ちません:
このスタックオーバーフローの質問もあります:
ORA-29908: 補助演算子のプライマリ起動がありません
しかし、答えは当てはまりません。私はOracle 11.2.0.3.0を使用しています
oracle-text - Oracle Text IDF (逆ドキュメント頻度) スコアリングの理解 \ 変更
Oracle Text は、IDF スコアリングのバリエーションを使用します。正確なアルゴリズムは文書化されていません。
シナリオでは、スコアは、IDF を手動で計算したときに取得したスコアとは異なるようです
オラクルがスコアを計算する方法を理解し、場合によってはそれを変更したいと思います。
スコアリング アルゴリズムを変更する方法はありますか?
テーブル DR$indexname$I の TOKEN_COUNT フィールドに頻度という用語が含まれているようです。これは正しいですか?
DR$ テーブルの構造は文書化されていますか?
oracle - Oracle Text クエリー・リライト・テンプレートが機能しない
Oracle ドキュメントの例の最後の 2 つの書き換えルールが機能しないのはなぜですか?
ソースhttp://docs.oracle.com/cd/B28359_01/text.111/b28303/query.htm#i1007557
クエリ アプリケーションは、さまざまな演算子の組み合わせを使用して 1 つ以上の方法でクエリ文字列を解釈し、エンド ユーザー クエリを解析することがあります。たとえば、ユーザーがククイ ナッツのクエリを入力した場合、アプリケーションはクエリ {kukui nut} および {kukui or nut} を入力して再現率を高めることができます。
クエリ書き換え機能を使用すると、元のクエリを書き換えられたバージョンに展開する単一のクエリを送信できます。結果は重複なしで返されます。
クエリ テンプレート機能を使用して書き換えシーケンスを指定します。クエリの書き直されたバージョンは、CONTAINS または CATSEARCH への 1 回の呼び出しで効率的に実行されます。
次のテンプレートは、クエリ書き換えシーケンスを定義します。{kukui nut} のクエリは次のように書き直されます。
{kukui} {nut}
{ククイ}; {ナット}
{kukui} AND {nut}
{kukui} ACCUM {nut}
これらの変換のクエリ書き換えテンプレートは次のとおりです。
c# - Oracle Textの検索/問合せで予約文字を解析しますか?
私は Web アプリを設計しており、全文検索を実行できる検索ページがあります (関心のあるテキスト列に CONTEXT インデックスを作成しました)。Oracleでは、全文検索を実行して結果を返すCONTAINS クエリを実行できます。これは、次のような予約文字を入力する場合を除いて、優れています。
「氷* AND 場所 AND アラスカ」
「ice」の後に「*」を置くと、Oracle エラーが発生します。つまり、
これを回避する最も適切な方法は何ですか - 予約文字とキーワードを除外できることは知っていますが、もっとエレガントな方法があると思います。あなたがそのようなことを知っているなら、私は本当に知りたいです:-)
注: 以下は、Oracle テキスト検索を実行するコードです。目を見張るものはありません。
oracle - oracle.contextインデックスでインデックス付けされたドキュメントの数を見つけますか?
クエリに一致するドキュメントの数をカウントするために使用できることはわかってctx_query.count_hits
います。同様に、
しかし、これらは私が実際にクエリを持っている場合の唯一のオプションです。空の文字列をクエリとして渡すと、これらの関数は例外をスローします(oracleに感謝します...)。それで、
oracle.textインデックスによってインデックス付けされたドキュメントの総数をカウントする方法はありますか?
oracle - Oracle コンテキスト インデックス作成スクリプト
すでに存在するインデックスの完全な Oracle CONTEXT インデックス作成スクリプトを生成する必要があります。
私はかつてOracleのドキュメントでそれを行う方法を見つけたことがあると確信していますが、今はできません。DBMS_METADATA.get_ddl のようなものが必要ですが、より詳細です。つまり、次のようなインデックスを作成するときです
Oracle は、データストアやストップリストの構成など、デフォルトで多くのことを行います。暗黙的に呼び出されるすべての CTX_DDL プロシージャを確認したいと思います。