Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

Google शैली सुझाए गए खोज परिणामों को वापस करने के लिए T-SQL संग्रहीत कार्यविधि

मैं पूर्ण पाठ खोज का सुझाव देने जा रहा हूं (एमएस 'या ल्यूसीन काम करेगा) नीचे दिया गया कोड एमएसएसक्यूएल एफटीएस का उपयोग करता है क्योंकि इस समय मैं अपने ऐप में इसका उपयोग करता हूं।

यदि आपने पहले से नहीं किया है तो FTS खोज स्थापित करें। यदि आपने जांच की है कि सेवा चल रही है। प्रबंधन स्टूडियो में इसे कैटलॉग सेटअप करने के लिए चलाएं और उत्पाद तालिका जोड़ें; और कैटलॉग में रंग / नाम / उत्पाद संख्या।

USE [AdventureWorks]
GO
CREATE FULLTEXT CATALOG [ProductsTest]WITH ACCENT_SENSITIVITY = OFF
AUTHORIZATION [dbo]

GO

USE [AdventureWorks]
GO
CREATE FULLTEXT INDEX ON [Production].[Product] KEY INDEX [PK_Product_ProductID] ON ([ProductsTest]) WITH (CHANGE_TRACKING AUTO)
GO
USE [AdventureWorks]
GO
ALTER FULLTEXT INDEX ON [Production].[Product] ADD ([Color])
GO
USE [AdventureWorks]
GO
ALTER FULLTEXT INDEX ON [Production].[Product] ADD ([Name])
GO
USE [AdventureWorks]
GO
ALTER FULLTEXT INDEX ON [Production].[Product] ADD ([ProductNumber])
GO
USE [AdventureWorks]
GO
ALTER FULLTEXT INDEX ON [Production].[Product] ENABLE
GO

फिर आप एक ही बार में सभी स्तंभों के विरुद्ध क्वेरी चला सकते हैं; जैसे सिल्वर (रंग और नाम के अनुसार चुना गया)

Select * from production.product where
contains(*, '"Silver*"')

क्वेरी पर * सिल्वर* मिलेगा ताकि आप इसका उपयोग उपयोगकर्ता द्वारा टाइप किए जाने पर परिणाम बनाने के लिए कर सकें। एक बात पर विचार करना है कि Google वास्तविक समय में यह काम करता है - यदि आप बहुत अधिक डेटा खोज रहे हैं तो आप सक्षम हो सकते हैं उपयोगकर्ता के टाइपिंग को बाधित किए बिना डेटा वापस पाने के लिए। मुझे लगता है कि आम तौर पर लोग इन खोजों का उपयोग उस पहले अक्षर से टाइप करके करते हैं जिसे वे ढूंढ रहे हैं - मैं स्वीकार करता हूं कि वर्तनी की गलतियां होंगी- आप इसे संभालने के लिए शायद हर जगह दबाए जाने के बाद एक वर्तनी परीक्षक लागू कर सकते हैं। या चल रही खोजों को संग्रहीत करें और गलत वर्तनियों को देखें और एक मैपिंग (या कस्टम थिसॉरस का उपयोग करके FTS में) के आधार पर इसे संभालने के लिए कोड बदलें।

रैंकिंग किसी भी व्यवसाय के लिए एक मजेदार विकास मुद्दा होने जा रहा है; क्या आपको माउंटेन फ़्रेम के लिए पहला परिणाम मिल रहा है-या क्या आप उन्हें बिक्री या कीमत के आधार पर तौलना चाहते हैं? यदि उपयोगकर्ता एक से अधिक टेक्स्ट शब्द टाइप करता है तो आप खोज स्ट्रिंग के आधार पर रैंकिंग तैयार करने के लिए FTS का उपयोग कर सकते हैं।

select aa.rank, bb.* 
From containstable(production.product, *, '"Mountain" and "Silver*"') aa
inner join production.product bb
on aa.[key] = bb.productid
order by rank desc

यह 30 पंक्तियों को लौटाता है; और प्रथम स्थान रिकॉर्ड निर्धारित करने के लिए उपयोगकर्ता द्वारा इनपुट किए गए टेक्स्ट के आधार पर भार। किसी भी मामले में आप अपनी व्यावसायिक इच्छाओं के अनुरूप परिणामों को बदलने के लिए एक कोडित रैंकिंग जोड़ना चाहेंगे - रैंकिंग ते उच्चतम मूल्य विजेट 1 तरीका नहीं हो सकता है। यही कारण है कि आप लोगों द्वारा खोजी गई / क्लिक की गई चीज़ों को संग्रहीत करने जा रहे हैं ताकि आप बाद में परिणामों का विश्लेषण कर सकें।

एक बहुत अच्छा भाषा पार्सर है .Net के लिए जो FTS'able भाषा में इनपुट की गई Google शैली स्ट्रिंग क्वेरी का अनुवाद करता है जो आपकी साइट का उपयोग करने वाली किसी भी बूलियन खोजों के लिए परिचितता प्रदान करता है।

आप उपयोगकर्ताओं के इनपुट के विरुद्ध ऑडिट करके भीड़ सुविधाओं के बारे में कुछ ज्ञान जोड़ना चाह सकते हैं और अंततः विज़िट करने के लिए गए और अंतिम सुझावों को बदलने के लिए सफलता मानचित्रों का उपयोग करके उन्हें वास्तव में उपयोगकर्ता के लिए प्रासंगिक बना सकते हैं।

अंतिम सुझाव के रूप में यदि यह एक व्यावसायिक वेबसाइट है तो आप Easyask देखना चाहेंगे। जो एक डरावना महान प्राकृतिक भाषा संसाधक है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में मौजूदा तालिका में एक नया कॉलम कैसे जोड़ें

  2. संबंधपरक डेटाबेस में उपवर्ग की अखंडता बनाए रखना

  3. SQL - नामांकित इंस्टेंस के साथ लिंक्ड सर्वर से कनेक्ट करें

  4. SQL सर्वर व्यू में प्रोग्रामेटिक रूप से ODBC लिंक्ड टेबल कैसे बनाएं और क्या यह संपादन योग्य है?

  5. SQL सर्वर में एकल पंक्तियों से कई तार कैसे निकालें?