2010-12-23 10 views
8

मैं एक संग्रह प्रणाली के लिए एक सी # विनफॉर्म एप्लिकेशन लिख रहा हूं। सिस्टम में एक विशाल डेटाबेस है जहां कुछ तालिकाओं में 1.5 मिलियन से अधिक रिकॉर्ड होंगे। मुझे जो चाहिए वह एक एल्गोरिदम है जो इन अभिलेखों की सामग्री को अनुक्रमित करता है। मुख्य रूप से, फ़ाइलें माइक्रोसॉफ्ट ऑफिस, पीडीएफ और टीXT दस्तावेज हैं। कोई भी मदद कर सकता है? चाहे विचार, लिंक, किताबें या कोड के साथ, मैं इसकी सराहना करता हूं :)टेक्स्ट इंडेक्सिंग एल्गोरिदम

उदाहरण: यदि मैं डेटाबेस में किसी निश्चित फ़ोल्डर में "अंतर्राष्ट्रीय" शब्द खोजता हूं, तो मुझे उन सभी फाइलें मिलती हैं जिनमें उस शब्द का आदेश दिया गया है प्रासंगिक मानदंड जैसे कि प्रासंगिकता, दिनांक संशोधित करना ... आदि

+1

आप खुद को बनाने के बजाय ऐसा करने के लिए अपने डेटाबेस की अनुक्रमण सुविधाओं का उपयोग क्यों नहीं करेंगे? –

+0

क्या आप प्रत्येक दस्तावेज़ में प्रत्येक शब्द को सूचीबद्ध करना चाहते हैं, या दस्तावेज़ के बारे में सिर्फ सारांश/मेटाडेटा चाहते हैं? –

+0

@ ओजेः मैं फाइलों की सामग्री को इंडेक्स करना चाहता हूं, न कि उनके शीर्षक :) – Majd

उत्तर

8

आपको एक उलटा इंडेक्स के रूप में जाना जाता है, जो कि खोज इंजन कैसे काम करता है (ला ला Google) के मूल में जाना जाता है। अपाचे ल्यूसीन उलटा इंडेक्सिंग के लिए तर्कसंगत रूप से सर्वश्रेष्ठ लाइब्रेरी है। - जावा Lucene पुस्तकालय का एक नेट बंदरगाह

  1. Lucene.net: आप 2 विकल्प हैं।

  2. Apache Solr - ल्यूसीन libs का उपयोग करके निर्मित एक पूर्ण खोज सर्वर और आसानी से आपके .NET अनुप्रयोग में अभिन्न अंग है क्योंकि इसमें एक विश्वसनीय API है। कैशिंग, स्केलिंग, वर्तनी-जांच आदि जैसी कई विशेषताओं के साथ आउट ऑफ़ द बॉक्स में आता है। आप उत्कृष्ट SolrNet लाइब्रेरी का उपयोग करके अपने ऐप-टू-सोलर इंटरैक्शन के लिए जीवन को आसान बना सकते हैं।

  3. Apache Tika एक बहुत व्यापक डेटा/मेटाडाटा निष्कर्षण के साथ PDF, HTMLs, एमएस ऑफ़िस डॉक्स आदि एक सरल विकल्प काम IFilter एपीआई होगा टूलकिट प्रदान करता है। अधिक जानकारी के लिए this आलेख देखें।

+0

हां, आपको उलटा इंडेक्स के साथ यह सही मिला है :) मैं ये दे रहा हूँ पुस्तकालय एक नजर, thx \ m / – Majd

1

ऐसा लगता है कि आपको दो चीजों की आवश्यकता है। सबसे पहले, आपको एक ऐसी प्रणाली की आवश्यकता है जो वास्तव में अनुक्रमण को निष्पादित करे। इसके लिए, आप म्यूकोस के रूप में लुसीन, या अपाचे सोलर के साथ जा सकते हैं। आप Sphinx देख सकते हैं जो एक और पूर्ण टेक्स्ट सर्च इंजन है। आप अपने डेटाबेस में निर्मित पूर्ण पाठ सुविधाओं का भी उपयोग कर सकते हैं। SQL सर्वर और MySQL दोनों में पूर्ण टेक्स्ट अनुक्रमण क्षमताएं हैं। जैसा कि कई अन्य डेटाबेस करते हैं। दूसरी चीज जो आपको चाहिए वह फाइलों से टेक्स्ट प्राप्त करने का एक तरीका है। Txt फ़ाइलों और HTML फ़ाइलों जैसी चीजों के लिए, यह आसान है क्योंकि अधिकांश पूर्ण टेक्स्ट सर्च इंजन उन्हें नियमित टेक्स्ट के रूप में स्वीकार करेंगे। एमएस वर्ड या पीडीएफ जैसे अधिक जटिल द्विआधारी दस्तावेजों के लिए, आपको टेक्स्ट प्राप्त करने के लिए एक और तरीका खोजना होगा।

0

मेरे अनुसार, तालिका विभाजन करें, आईडी के साथ तालिकाओं को अनुक्रमणित करें और फिर खोज करें।

संबंधित मुद्दे