0
Oracle APEXアプリケーションを介したフルテキスト検索を有効にする必要がある3列の表があります。 3つの列をすべて検索できるように、どのようにしてインデックスを作成できますか?Context Full-Text Searchの同じテーブルの複数の列を索引付けしますか?
は現在、私は1つの列(STOP_NAME)上でコンテキストのインデックスを持っている:
DECLARE
l_query VARCHAR2(4000);
BEGIN
l_query:=
'select
"BUS_STOP_ID",
"STOP_NAME",
"DESC_NOTES",
"BUS_NUMBERS",
"LOCATION"
from "BUS_STOPS" ';
IF v('P2_REPORT_SEARCH') IS NOT NULL THEN
l_query := l_query||' '||'
where
(
CONTAINS(STOP_NAME, ''$'|| v('P2_REPORT_SEARCH') ||''') > 0
)
';
END IF;
RETURN l_query;
END;
しかし、どのように私は、テキスト検索のための3つの列(stop_name、desc_notes、bus_numbers)を使用してインデックスを作成することができますか?私は3列を使用して作成する標準インデックスを使用してみましたが、それはうまくいきませんでした:
BEGIN
ctx_ddl.create_preference('my_multi_idx', 'MULTI_COLUMN_DATASTORE');
ctx_ddl.set_attribute('my_multi_idx', 'COLUMNS', 'stop_name, desc_notes, bus_numbers');
END;
あらかじめ設定された優先順位を使用して、インデックス自体を作成することによって、続い:
CREATE INDEX bus_stops_ctx_idx
ON bus_stops (stop_name, bus_numbers, desc_notes)
INDEXTYPE IS ctxsys.context;
SQLインジェクション警告!これを代わりに試してください: 'CONTAINS(STOP_NAME、 '' $ '' ||:P2_REPORT_SEARCH)> 0' –