/ / SQL कई विशेषताओं (अनुरूपता द्वारा आदेश) के साथ छंटनी - sql, sql-server

SQL कई विशेषताओं (अनुरूपता द्वारा आदेश) के साथ छंटनी - sql, sql-server

मुझे कुछ विशेषताओं जैसे कि एक तालिका मिली हैनाम और पता। एक खोज क्षेत्र में मैं उन लोगों के बारे में जो कुछ भी जानता हूं उसमें एक सिस्टम प्रकार के उपयोगकर्ताओं को जाने देना चाहता हूं और एक तालिका में परिणाम लौटाता हूं। जाहिर है मैं उन परिणामों को चाहता हूं जो शीर्ष पर होने के लिए सबसे उपयुक्त हैं।

  1. रैंकिंग एसक्यूएल कमांड में की जानी चाहिए या क्या ऐसे अन्य तरीके हैं जो बेहतर काम कर सकते हैं?
  2. क्या किसी को उच्चतम अनुरूपता के आधार पर परिणामों को क्रमबद्ध / रैंक करने का एक अच्छा तरीका पता है? मैं मूल रूप से व्यक्ति को शीर्ष पर दिखाना चाहता हूं जो खोज मानदंडों को सबसे अधिक फिट करता है।

आप यहां एक उदाहरण देख सकते हैं: http://sqlfiddle.com/#!2/19e9ad

आपकी सहायताके लिए धन्यवाद!

(मैं वर्तमान में SQL सर्वर का उपयोग करता हूं, लेकिन किसी भी मदद की सराहना की जाती है।)

उत्तर:

उत्तर № 1 के लिए 1

आप पूर्ण पाठ अनुक्रमित और खोजों की जांच करना चाहते हैं - उनके पास रैंकिंग के लिए विकल्प हो सकते हैं जो आपके लिए काम कर सकते हैं:

... और कार्यक्षमता की खोज जानकारी:

वैकल्पिक रूप से आप स्वयं भी काम कर सकते हैंउपयोगकर्ता इनपुट को पार्स करना और शब्द-दर-शब्द मिलान करना, फिर परिणाम बढ़ाना जो अधिक शब्दों से मेल खाते हों, सटीक शब्द क्रमबद्ध करना आदि। लेकिन आपको स्वयं कई मामलों को संभालने की आवश्यकता होगी (जैसे "न्यूयॉर्क" जैसे बहु-शब्द वाले शहर आदि। ।)।


उत्तर № 2 के लिए 1

लगता है जैसे आप स्ट्रिंग तुलना फ़ंक्शन के लिए पूछ रहे हैं, जैसे कि जारो-विंकलर। यह Oracle के लिए फ़ंक्शन में बनाया गया है (http://docs.oracle.com/cd/E18283_01/appdev.112/e16760/u_match.htm) और मैं कई अन्य आरडीबीएम की कल्पना करूंगा।

यारो-विंकलर पहचानने में बहुत अच्छा हैतार सिर्फ गलत क्रम में हैं, और स्कोर यह दर्शाएगा। कुछ परीक्षण चलाएं और देखें कि क्या यह आपको आपके इच्छित परिणाम देता है, लेकिन मैं जो काम करता हूं, उसमें बहुत उपयोग करता हूं (ग्राहक डेटा एकीकरण)। मैंने एक एपीआई विकसित किया है जो अनिवार्य रूप से ऐसा करता है, लेकिन बहुत कुछ जोड़ा जटिलता के साथ, जैसे कि निक नाम के लिए लेखांकन, आदि एपीआई एपीआई पर है http://matchbox.io/#match-api.


जवाब के लिए 0 № 3

आप sql में सॉर्ट कर सकते हैं, लेकिन सबसे आम उपाय यह है कि आप अपने UI में सॉर्ट करें इसलिए न ही db से डेटा को हर बार उपयोगकर्ता परिवर्तन क्रम के लिए अनुरोध करना होगा।

आप अपनी खोज के लिए अपनी क्वेरी में फ़ील्ड जोड़ सकते हैं comformity कुछ इस तरह

 SELECT *, function_comformity() as comformity

तो आप उस फ़ील्ड के लिए अपने UI पर सॉर्टिंग कर सकते हैं जैसा आप नाम या ज़िप कोड के लिए करते हैं।