2010-03-12 12 views
13

मेरी क्वेरी में शामिल() विधि का उपयोग कर बहुत सारे अनावश्यक परिणाम हैं। मुझे या कुछ और उपयोग करने के लिए मत कहो। यह हार्डकोड किया गया है और बदला नहीं जा सका।पीएल-एसक्यूएल काम में() कैसे शामिल है?

+2

क्या आप क्वेरी पोस्ट कर सकते हैं? – Padmarag

+0

क्या मैं सटीक परिणाम – Artic

+0

में खोज परिणामों को संकीर्ण करने के लिए किसी भी पैरा को पास कर सकता हूं * ब्लैब्ला से * चुनें (dFullText, "car") – Artic

उत्तर

15

इस उदाहरण देखें। मानक उपयोग इस तरह है (प्रदर्शित करने के लिए क्या contains खंड contains मिलान 1 में के आधार पर से लौटा है score ऑपरेटर का उपयोग score में 1):

SELECT score(1), value 
FROM table_name 
WHERE CONTAINS(textField, 'searchString', 1) > 0; 

तालिका में इस तरह के डेटा के लिए table_name

value | textField 
-------|----------------------------------------------- 
A  | 'Here is searchString. searchString again.' 
B  | 'Another string' 
C  | 'Just one searchString' 

कि क्वेरी वापसी होगी

2 A 
1 C 

तो शामिल करने के लिए समान है जैसे, लेकिन यह गणना करेगा कि टेक्स्ट फ़ील्ड में स्ट्रिंग कितनी बार होती है। मुझे आपके द्वारा पोस्ट की गई क्वेरी में जिस तरह से उपयोग किया जाता है, उसका उपयोग करके संसाधन नहीं मिला, लेकिन मुझे लगता है कि dFullText में car का कम से कम एक उदाहरण है, या इस वर्ग के बराबर एक उदाहरण है:

Select * from blabla where dFullText like "%car%" 

Here एक और स्रोत है।

+0

क्या इसमें() और instr() के बीच कोई अंतर है? – Rene

+0

@Rene, हाँ वे अलग हैं। '() की गणना करता है कि किसी टेक्स्ट फ़ील्ड में स्ट्रिंग कितनी बार होती है और वह संख्या वापस कर देगी। 'instr()' किसी फ़ील्ड (या अन्य स्ट्रिंग) में एक स्ट्रिंग के लिए खोज करता है और पहली खोज स्ट्रिंग की अनुक्रमणिका देता है (या 0 अगर यह नहीं मिला है)। Http://www.techonthenet.com/oracle/functions/instr.php पर 'instr()' के उदाहरण देखें – rosscj2533

0

शामिल है कि एक 'संदर्भ सूचकांक' है, जो खोज के लिए अनुक्रमित पाठ फ़ील्ड पाठ फ़ील्ड पर प्रयोग किया जाता है से oracle.com

declare 
rowno number := 0; 
    begin 
    for c1 in (SELECT SCORE(1) score, title FROM news 
      WHERE CONTAINS(text, 'oracle', 1) > 0 
      ORDER BY SCORE(1) DESC) 
    loop 
    rowno := rowno + 1; 
    dbms_output.put_line(c1.title||': '||c1.score); 
exit when rowno = 10; 
end loop; 
end; 
संबंधित मुद्दे