ऐसा इसलिए है क्योंकि आपका डिफ़ॉल्ट लेक्सर अवधि को शब्द विभाजक के रूप में मान रहा है।
प्रारंभिक सेटअप:
create table my_table(item_number varchar2(50 byte) not null);
insert into my_table values ('1234.1234');
create index my_index on my_table (item_number)
indextype is ctxsys.context;
यह आपके द्वारा देखे जाने वाले व्यवहार को प्राप्त करता है:
SELECT * FROM MY_TABLE
WHERE CONTAINS(ITEM_NUMBER, '%1234') > 0;
--------------------------------------------------
1234.1234
SELECT * FROM MY_TABLE
WHERE CONTAINS(ITEM_NUMBER, '%.1234') > 0;
no rows selected
अगर आप कोई ऐसा लेक्सर जोड़ते हैं जो PRINTJOINS
अवधि शामिल करने के लिए:
drop index my_index;
begin
ctx_ddl.create_preference('my_lexer', 'BASIC_LEXER');
ctx_ddl.set_attribute('my_lexer', 'PRINTJOINS', '.');
end;
/
create index my_index on my_table (item_number)
indextype is ctxsys.context
parameters ('lexer my_lexer');
तो यह आपके इच्छित व्यवहार करता है:
SELECT * FROM MY_TABLE
WHERE CONTAINS(ITEM_NUMBER, '%.1234') > 0;
ITEM_NUMBER
--------------------------------------------------
1234.1234
टेक्स्ट इंडेक्सिंग तत्वों के बारे में और पढ़ें ।