2010-01-03 8 views
7

इस समय मुझे पता है कि कंपास इस काम को संभाल सकता है। लेकिन कंपास के साथ अनुक्रमण बहुत महंगा लग रहा है। क्या कोई हल्का विकल्प है?Google App Engine के लिए सबसे अच्छी जावा टेक्स्ट इंडेक्सिंग लाइब्रेरी क्या है?

उत्तर

4

Apache Lucene जावा में पूर्ण पाठ अनुक्रमण के लिए डी-फैक्टो विकल्प है। ऐसा लगता है कि Compass Core में "डेटाबेस के भीतर इंडेक्स को स्टोर करने के लिए ल्यूसीन निर्देशिका का कार्यान्वयन (जेडीबीसी का उपयोग करके) शामिल है। इसे कम्पास कोड बेस से अलग किया गया है और शुद्ध ल्यूसीन अनुप्रयोगों के साथ इसका उपयोग किया जा सकता है।" प्लस टन अन्य सामान। आप केवल ल्यूसेंस घटक को अलग करने की कोशिश कर सकते हैं जिससे कई libs को अलग कर दिया जा सके और इसे अधिक हल्का बना दिया जा सके। या तो कम्पास को पूरी तरह से डुबोएं और शुद्ध अनौपचारिक लुसीन का उपयोग करें।

+0

हाँ, शायद मैं इस तरह से जाऊंगा। ल्यूसीन का उपयोग करने के बारे में मेरी चिंता यह है कि आईओ ऐप इंजन पर बहुत महंगा है और मुझे उम्मीद है कि कुछ निकाय पहले से ही लुसीन या घर की उगाई गई लाइब्रेरी का अनुकूलित संस्करण तैयार करते हैं जो खाते में अत्यधिक उच्च आईओ लागत लेता है। – user242726

1

Google App Engine के लिए, मैंने देखा है कि एकमात्र इंडेक्सिंग लाइब्रेरी appengine-search है, इसका वर्णन this page पर इसका उपयोग करने के तरीके के विवरण के साथ है। हालांकि मैंने इसे आजमाया नहीं है।

मैंने Lucene (जो कम्पास चालू है) का उपयोग किया है और इसे तुलनात्मक रूप से कम खर्च के साथ काम करने के लिए पाया है। इंडेक्सिंग एक ऐसा कार्य है जिसे आप समय-समय पर शेड्यूल कर सकते हैं जो आपके ऐप के लिए काम करता है।

कुछ विकल्प इंडेक्सिंग परियोजनाओं का उल्लेख this SO thread में किया गया है, जिसमें Xapian और minion शामिल हैं। हालांकि, मैंने इनमें से किसी भी चीज की जांच नहीं की है, क्योंकि लुसीन ने सबकुछ किया जो मुझे बहुत अच्छी तरह से चाहिए।

6

ईमानदार होने के लिए, मुझे नहीं पता कि ल्यूसीन इंडेक्सिंग के मामले में कम्पास से हल्का होगा (क्यों होगा, इसके लिए ल्यूसीन का उपयोग नहीं किया जाएगा?)।

वैसे भी, क्योंकि आपने विकल्पों के लिए कहा है, GAELucene है। मैं नीचे its announcement के हवाले कर रहा हूँ:

चर्चा "Can I run Lucene in google app engine?" द्वारा प्रबुद्ध मैं जो मदद आप Google अनुप्रयोग इंजन पर खोज अनुप्रयोगों को चलाने कर सकते हैं आधारित Lucene घटक, GAELucene एक गूगल डेटासंग्रह, कार्यान्वित किया।

GAELucene के मुख्य clazz में शामिल हैं:

  • GAEDirectory - एक रीड ओनली निर्देशिका गूगल डेटासंग्रह पर आधारित है।
  • GAEFile - एक इंडेक्स फ़ाइल के लिए खड़ा है, फ़ाइल की बाइट सामग्री बहु GAEFileContent में विभाजित होगी।
  • GAEFileContent - अनुक्रमणिका फ़ाइल का एक खंड के लिए खड़ा है।
  • GAECategory - विभिन्न सूचकांक के पहचानकर्ता।
  • GAEIndexInput - एक स्मृति-निवासी इंडेक्स इनपुट? RAMInputStream जैसे कार्यान्वयन।
  • GAEIndexReader - IndexReader के लिए रैपर?जो संचित हो में GAEIndexReaderPool
  • GAEIndexReaderPool - GAEIndexReader

निम्नलिखित कोड का टुकड़ा के लिए पूल दर्शाता GAELucene के उपयोग खोज कार्य करें:

Query queryObject = parserQuery(request); 
GAEIndexReaderPool readerPool = GAEIndexReaderPool.getInstance(); 
GAEIndexReader indexReader = readerPool.borrowReader(INDEX_CATEGORY_DEMO); 
IndexSearcher searcher = newIndexSearcher(indexReader); 
Hits hits = searcher.search(queryObject); 
readerPool.returnReader(indexReader); 

मैं दिल से पूरी चर्चा को पढ़ने के लिए सलाह देते हैं घबराहट पर, बहुत जानकारीपूर्ण।

शायद ज़रुरत पड़े, कम्पास के बारे में, शे Banon App इंजन यहाँ में कम्पास का उपयोग कैसे का ब्यौरा एक ब्लॉग प्रविष्टि लिखा है: http://www.kimchy.org/searchable-google-appengine-with-compass/

+0

ध्यान रखें कि GAELucene आपको GAE में अनुक्रमणिका बनाने की अनुमति नहीं देता है। आपको कहीं भी इंडेक्स फाइलें तैयार करनी चाहिए और उन्हें GAE पर अपलोड करना चाहिए। – yegor256

+0

Google Code में यह भी एक नोट है कि "गैलुसेन भारी सूचकांक के साथ चलाने के लिए उपयुक्त नहीं है, यह छोटे सूचकांक के लिए बेहतर है, लगभग 100 एमबी। बड़े बदलते सूचकांक के लिए, आपको अन्य समाधान ढूंढने की आवश्यकता है"। –

0

यदि आप जीएई पर लुसीन चलाने के लिए चाहते हैं तो आप LuGAEne पर भी देख सकते हैं। यह जीएई के लिए लुसेन के Directory का कार्यान्वयन है।

प्रयोग वास्तव में बहुत सरल है, बस के साथ GaeDirectory

Directory directory = new GaeDirectory("MyIndex"); 
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43); 
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, analyzer); 
IndexWriter writer = new IndexWriter(directory, config); 
... 

gaelucene "रखरखाव मोड" में हो रहा है Lucene के मानक निर्देशिका में से एक की जगह (कोई सितं, 2009 के बाद से प्रतिबद्ध) और lucene-appengine (अभी तक) काम नहीं करता है जब आप अपने आवेदन में Objectify संस्करण 4 का उपयोग कर रहे हैं।

अस्वीकरण: मैं LuGAEne का लेखक हूं।