सबसे पहले आपको हाइफ़न को printjoin
. के रूप में परिभाषित करना होगा आपके लेक्सर में।
इसे
. से जांचेंselect IXV_ATTRIBUTE, IXV_VALUE from CTXSYS.CTX_INDEX_VALUES where IXV_CLASS = 'LEXER';
IXV_ATTRIBUTE IXV_VALUE
-----------------------------------------
PRINTJOINS _$%&-
NUMJOIN .
NUMGROUP .
WHITESPACE ,=
तब आप (इस लेक्सर के साथ अनुक्रमणिका को फिर से बनाने के बाद) पुष्टि कर सकते हैं कि टोकन अपेक्षित हैं:(आपकी तालिका अनुक्रमणिका नाम के आधार पर भिन्न होगी; 'DR$%$I' जैसी सभी तालिकाओं की जाँच करें)
select TOKEN_TEXT from DR$TEXTIDX_IDX$I where TOKEN_TEXT like '%-XYZ99';
TOKEN_TEXT
----------------------------------------------------------------
AN-XYZ99
BAR-XYZ99
FO-XYZ99
अब आप खोज स्ट्रिंग के लिए क्वेरी कर सकते हैं।
स्पष्ट रूप से आपको हाइफ़न से BAR-XYZ99
. के रूप में बचना चाहिए BAR
with के साथ पंक्तियाँ मिलेंगी नहीं जिसमें XYZ99
. है; हालांकि hyphen with no space
थोड़ा अलग है।
SELECT SCORE(1),txt
FROM textidx
WHERE CONTAINS(txt, 'BAR-XYZ99',1) > 0;
SCORE(1) TXT
---------- ------------------------------------------------------------------------------------
4 unbekannt Stadt Text: FO-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 bar
किसी कारण से (मैं 11.2.0.2.0 को हूं) घुंघराले ब्रेसिज़ से बचना काम नहीं करता (रिटर्न नो मैच), लेकिन बैकस्लैश का उपयोग करना ठीक है।
SELECT SCORE(1),txt
FROM textidx
WHERE CONTAINS(txt, 'BAR\-XYZ99',1) > 0;
SCORE(1) TXT
---------- ------------------------------------------------------------------------------------
4 unbekannt Stadt Text: BAR-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 bla