2015-02-03 8 views
6

मेरे पास जावा आधारित एप्लिकेशन और एक MySQL डेटाबेस में कीवर्ड का एक सेट है (कुल 3 एम कीवर्ड में, उनमें से प्रत्येक में एक से अधिक शब्द शामिल हो सकते हैं, उदाहरण के लिए यह हो सकता है: "स्मृति", " पुराना घर "," यूरोपीय संघ कानून ", आदि)।जावा में एकाधिक कीवर्ड खोज

उपयोगकर्ता मनमाने ढंग से पाठ (कई बार कई पेज) के साथ एक दस्तावेज़ अपलोड करके आवेदन के साथ बातचीत करता है। मैं क्या करना चाहता हूं यह जानने के लिए कि दस्तावेज़ में कहां और कहां से 3 मिलियन कीवर्ड दिखाई देते हैं।

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

मैं किसी भी मदद की सराहना करता हूं।

+0

कीवर्ड के बगल में कॉलम में प्रत्येक कीवर्ड के लिए स्टोर हैश के बारे में और प्रत्येक शब्द को प्रत्येक शब्द की जांच करने के दौरान, कीवर्ड से कीवर्ड का चयन करें, जहां कीवर्ड_शैश = गणना हैश (शब्द टोच चेक) '? – rzysia

+0

आपको क्या विचार करने की आवश्यकता है वह सबसे छोटा रास्ता होगा। अपलोड किए गए दस्तावेज़ से 3 मिलियन खोजें, या एन वाक्यांशों का निर्माण करना। दस्तावेज खोजने के लिए सभी 3 एम कीवर्ड की खोज बनाने के लिए एक समाधान हो सकता है। लुसेनेस कीवर्ड हाइलाइटर का उपयोग करें और 3 एम कीवर्ड के साथ सभी हाइलाइट किए गए शब्दों से मेल करें;) –

+0

क्या हाइलाइटर में पाठ के समान निकाले गए हिस्से में बहु कीवर्ड परिणाम प्राप्त करने का कोई तरीका है? या इससे भी बेहतर कोई संरचना है जो फ़ाइल के भीतर पाए गए मिलान किए गए कीवर्ड की सूची वापस कर सकती है? –

उत्तर

1

आप एक ब्लूम फ़िल्टर http://en.wikipedia.org/wiki/Bloom_filter का उपयोग करने का प्रयास कर सकते हैं। फिर पॉजिटिव खोजने के लिए ब्लूम फ़िल्टर के खिलाफ प्रत्येक शब्द (ओं) की जांच करें। कृपया याद रखें कि झूठी सकारात्मक हो सकती है। इसलिए यदि ब्लूम फ़िल्टर से पॉजिटिव हैं तो आप एक एसक्यूएल क्वेरी का प्रयास कर सकते हैं जैसे 'कीवर्डटेबल से कीवर्ड चुनें जहां कीवर्ड (ब्लूम फ़िल्टर से पॉजिटिव्स) में कंक्रीटली से पहचानें कि अपलोड किए गए दस्तावेज़ में कौन से कीवर्ड मौजूद हैं।

गुवा पुस्तकालय में उपलब्ध ब्लूम फ़िल्टर का जावा कार्यान्वयन। http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/hash/BloomFilter.html

5

प्रोजेक्ट Apache Lucene सहायक हो सकता है।

अपाचे ल्यूसीनटीएम एक उच्च प्रदर्शन, पूर्ण-विशेषीकृत टेक्स्ट सर्च इंजन लाइब्रेरी है जो पूरी तरह से जावा में लिखी गई है। यह लगभग किसी भी एप्लिकेशन के लिए उपयुक्त तकनीक है जिसके लिए पूर्ण-पाठ खोज, विशेष रूप से क्रॉस-प्लेटफ़ॉर्म की आवश्यकता होती है।

आप कुछ उपयोगी ट्यूटोरियल here

1

आप sourceforge पर The Lemur Project भी उपलब्ध उपयोग कर सकते हैं पा सकते हैं:

लेमर परियोजना खोज इंजन, ब्राउज़र टूलबार, पाठ विश्लेषण उपकरण, और डेटा संसाधन को विकसित करता है कि इंड्री सर्च इंजन और क्लेवेब 0 9 डेटासेट सहित सूचना पुनर्प्राप्ति और टेक्स्ट खनन सॉफ्टवेयर के अनुसंधान और विकास का समर्थन करें।

और ताहर द्वारा अनुशंसित Apache Lucene एक अच्छा टूल है, और मैंने दोनों का उपयोग किया है और वे बहुत अच्छे हैं।

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