जलद शोधासाठी डेटा संचयित करण्यासाठी db4o आणि इंडेक्स डेटासाठी Lucene चा वापर मी कसा एकत्र करू?

मी db4o आणि Lucene दोन्हीसाठी नवीन आहे.

सध्या मी Android अॅपवर माझा डेटा टिकवून ठेवण्यासाठी db4o वापरत आहे. मला जलद शोध करण्याची क्षमता हवी आहे, तसेच वापरकर्त्याला सूचना (उदा. स्वयं पूर्ण सूचना) प्रदान करणे आवश्यक आहे.

SO पोस्टरमध्ये लुसीन डेटा इंडेक्स करण्यासाठी आणि db4o वापरण्याचा उल्लेख आहे.

ही पद्धत कोणी अंमलात आणली आहे का? जर होय, त्यांनी एकंदरीत दृष्टिकोन सामायिक केला तर मी कृतज्ञ आहे? पर्याय काय आहेत?


person Soumya Simanta    schedule 27.04.2011    source स्रोत
comment
मी फक्त डेटास्टोरेज म्हणून ल्युसीन वापरणार आहे. db4o ची गरज नाही किंवा तुम्ही ते का वापराल? (फक्त दस्तऐवज json म्हणून संग्रहित आणि अनुक्रमित नसलेल्या कदाचित संकुचित फील्डमध्ये संग्रहित करा)   -  person Karussell    schedule 20.10.2011


उत्तरे (1)


डेटाबेसमध्‍ये संग्रहित करण्‍याच्‍या आयटममधून कीवर्ड काढण्‍यासाठी आणि संबंधित डोमेन ऑब्‍जेक्‍टकडे निर्देशित करण्‍यासाठी मी 'कीवर्ड एक्‍सटेन्शन' ऑब्‍जेक्‍टस संग्रहित करण्‍यासाठी लुसीनचा वापर केला. यामुळे डोमेन ऑब्जेक्ट्स कीवर्डद्वारे शोधण्यायोग्य बनले (स्टेमिंगसाठी देखील परवानगी देते), आणि कीवर्डच्या समस्यांना वेगळे केले. डेटाबेस मोठ्या स्टॅटिक डेटासेट (USDA फूड न्यूट्रिएंट डेटाबेस) वरून तयार करण्यात आला होता, त्यामुळे मला रनटाइम दरम्यान बदलांची काळजी करण्याची गरज नव्हती. अशा प्रकारे हे समाधान सध्याच्या स्वरूपात मर्यादित आहे ...

सोल्यूशनचा पहिला भाग कोडचा एक छोटासा भाग लिहायचा होता जो काही मजकूर घेतो आणि दोन्ही कीवर्ड आणि संबंधित स्टेम (लुसेनच्या 'स्नोबॉल' स्टेमिंगचा वापर करून) नकाशामध्ये काढतो. तुम्ही डेटाबेसमध्ये साठवलेल्या काही डोमेन ऑब्जेक्ट्समधून कीवर्ड/स्टेम काढण्यासाठी याचा वापर करता. मी मूळ कीवर्ड जवळ ठेवले आहेत जेणेकरून मी केलेल्या शोधांवर काही प्रकारची आकडेवारी तयार करू शकेन.

दुसरा भाग म्हणजे मी 'कीवर्ड एक्स्टेंशन्स' नावाच्या वस्तू तयार करणे ज्यात स्टेम्स अॅरे म्हणून संग्रहित करतात आणि संबंधित कीवर्ड दुसर्या अॅरे म्हणून संग्रहित करतात आणि कीवर्ड असलेल्या संबंधित डोमेन ऑब्जेक्ट्ससाठी पॉइंटर असतात (मी अॅरे वापरले कारण ते अधिक सहजपणे कार्य करतात. DB4O). विशिष्ट डोमेन ऑब्जेक्ट्सच्या प्रकाराशी जुळण्यासाठी मी माझा KeywordExtension वर्ग देखील उपवर्ग केला आहे - म्हणून उदाहरणार्थ मी 'Nutrient' डोमेन ऑब्जेक्ट आणि संबंधित 'NutrientKeywordExtension' ऑब्जेक्ट संग्रहित करत होतो.

तिसरा भाग म्हणजे वापरकर्त्याने एंटर केलेला शोध मजकूर गोळा करणे, स्टेम काढण्यासाठी पुन्हा स्टेमर वापरणे आणि त्या स्टेमसह NutrientKeywordExtension ऑब्जेक्ट्स शोधणे. त्यानंतर तुम्ही ते विस्तार दर्शविलेल्या पोषक वस्तू मिळवू शकता आणि शेवटी त्यांना शोध परिणाम म्हणून सादर करू शकता.

मी म्हटल्याप्रमाणे, माझा डेटाबेस स्थिर होता - तो प्रथमच अनुप्रयोग चालवताना तयार झाला आहे. डायनॅमिक डेटाबेसमध्ये, आपल्याला पोषक तत्वे आणि संबंधित कीवर्ड विस्तार समक्रमित ठेवण्याबद्दल काळजी करण्याची आवश्यकता आहे. एक उपाय म्हणजे पोषक आणि पोषक कीवर्ड एक्स्टेंशन एका वर्गात विलीन करणे, जर तुमची ती सामग्री तुमच्या डोमेन ऑब्जेक्ट्समध्ये असायला हरकत नसेल (मला हे आवडत नाही). अन्यथा, प्रत्येक वेळी तुम्ही तुमचे डोमेन ऑब्जेक्ट्स तयार/संपादित/हटवताना तुम्हाला कीवर्ड एक्स्टेंशनचा हिशेब द्यावा लागेल.

मला आशा आहे की हे मर्यादित उदाहरण मदत करेल.

person Sam Stainsby    schedule 30.04.2011
comment
@सॅम - प्रतिसाद दिल्याबद्दल धन्यवाद. तुम्ही मला इंडेक्सच्या आकाराची कल्पना देऊ शकता आणि फोनवर प्रारंभिक निर्देशांक तयार करण्यासाठी किती वेळ लागला. - person Soumya Simanta; 03.05.2011
comment
@सौम्यामा या प्रकरणातील अनुक्रमणिका कीवर्ड एक्स्टेंशन ऑब्जेक्ट्सच्या संचाद्वारे मूर्त स्वरुपात आहेत. डेटाबेसमध्‍ये पुष्कळ अधिक डेटा आहे, आणि या विशिष्ट वस्तू कोणती जागा घेतात हे मी शोधून काढले नाही. मला शंका आहे की बहुतेक जागा 555,726 पोषक एंट्री ऑब्जेक्ट्स कोणत्याही परिस्थितीत घेतली जाते, ज्यामुळे 45 MB डेटाबेस फाइल होते. हे सर्व ग्रॅनाइट वेब ऍप्लिकेशनवर आहे (ग्रॅनाइट हे आमचे स्वतःचे ओपन सोर्स स्काला/विकेट/डीबी4ओ स्टॅक आहे), फोनवर नाही. सुरवातीपासून संपूर्ण DB4O डेटाबेस तयार करण्यासाठी 6-कोर डेस्कटॉपवर फक्त एका मिनिटापेक्षा जास्त वेळ लागतो. - person Sam Stainsby; 04.05.2011
comment
@Sam - ही उपयुक्त माहिती आहे. 45 MB हा DB4O db फाइलचा आकार आहे की लुसीन इंडेक्सचा आकार? - person Soumya Simanta; 04.05.2011
comment
@Soumya 45 MB एकूण DB4O db फाइल आकार आहे - person Sam Stainsby; 04.05.2011
comment
@सॅम - धन्यवाद. कृपया मला ल्युसीन इंडेक्सचा आकार सांगू शकाल का? - person Soumya Simanta; 04.05.2011
comment
@Soumya मी आधी म्हटल्याप्रमाणे, या प्रकरणातील अनुक्रमणिका KeywordExtension ऑब्जेक्ट्सच्या संचाने मूर्त रूप दिलेली आहे... आणि या विशिष्ट वस्तू कोणत्या जागा घेतात हे मी ठरवलेले नाही. . हा डेटाबेस आकाराचा एक अपूर्णांक आहे, परंतु पुढील काम केल्याशिवाय, मला काय अपूर्णांक माहित नाही. मी एवढेच म्हणू शकतो की येथे प्रत्येक डोमेन ऑब्जेक्टसाठी एक विस्तार ऑब्जेक्ट आहे. - person Sam Stainsby; 05.05.2011
comment
@सॅम हा ओपन सोर्स प्रोजेक्ट आहे का? तुम्ही काही कोड सोडणार आहात का? तुम्ही जे केले त्याचा db4o समुदायाला फायदा होऊ शकतो (हे छान आहे) - person German; 20.05.2011
comment
सध्या ओपन सोर्स नाही - आमच्या ग्रॅनाइट फ्रेमवर्कसाठी (जे ओपन सोर्स आहे) हे खरोखरच एक चाचणी केस होते. त्याचे काय करायचे याचा विचार करेल. - person Sam Stainsby; 21.05.2011
comment
@जर्मन - तुम्ही आता येथे अन्न पोषक डेटाबेससाठी मूलभूत वेब UI पाहू शकता: nutrients.ofthings.net - person Sam Stainsby; 12.08.2011