2010-07-05 17 views
5

आमतौर पर, कोई उपयोगकर्ता एक खोज करता है, हिटलिस्ट प्राप्त करता है, और फिर ब्राउज़ कर सकता है। हिटलिस्ट एक मध्यवर्ती परिणाम है जो पूरे ब्राउज़िंग में लगातार बना रहता है और आमतौर पर सत्र स्थिति में संग्रहीत होता है। जैसे यदि नए आइटम किसी अन्य द्वारा समवर्ती रूप से जोड़े जाते हैं, तो वे केवल बाद की खोज में दिखाई देंगे।एक आरईएसटी वेब ऐप में अंकन

एक आरईएसटी आवेदन में, मेरे पास यह मध्यवर्ती परिणाम आसानी से नहीं हो सकता है - न ही यह ग्राहक से संबंधित है, न ही मॉडल। मैंने Pagination in a REST web app पढ़ा है, लेकिन उत्तर के साथ पूरी तरह स्पष्ट नहीं हूं। ऐसा लगता है कि समाधान को अद्यतन नहीं किया गया है जब उपयोगकर्ता परिणाम ब्राउज़ करता है।

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

मुझे इस मुद्दे से कैसे निपटना चाहिए?

नोट: क्योंकि मैं play framework, कौन-सी HTTP राज्य या सत्र में सभी का बोध भी नहीं है उपयोग करने की योजना मैं पूछ रहा हूँ; यह शुद्ध आराम है।

उत्तर

0

मैं आपका संदर्भ क्या है, इस बारे में खो गया हूं, लेकिन अगर मुझे एक संक्षिप्त उत्तर देना है, तो यह है कि खोज परिणाम मॉडल का हिस्सा होना चाहिए। मुझे लगता है कि आपके पास एक खोज योग्य मॉडल है। आप जो इंडेक्स जानकारी को खोज और स्टोर करने के लिए आवश्यक भागों को इंडेक्स करते हैं (इसे मॉडल का हिस्सा भी बनाते हैं)। जब आप कोई खोज निष्पादित करते हैं, तो आप अनुक्रमणिका और प्रदर्शन परिणामों से पूछताछ करते हैं। दूसरी बार खोज करने में नए जोड़े गए आइटम नहीं होंगे, जब तक कि इंडेक्स पुन: उत्पन्न न हो जाए।

यह किसी भी सत्र स्थिति का उपयोग करने की आवश्यकता को हटा देता है और इसे आराम से रखता है, क्योंकि इंडेक्सिंग संसाधन पर एक और ऑपरेशन किया जाता है। क्या यही तुम्हें चाहिए था?

+0

डोमेन मॉडल लगातार संस्थाओं से बना है। क्या आप सुझाव देते हैं कि मुझे खोज परिणाम भी जारी रखना चाहिए? – ewernli

5

आपके द्वारा पहली खोज पर क्वेरी परिणाम मिलने के बाद, आप परिणाम को कैश में सहेज सकते हैं। एक सर्वर के लिए यह क्लस्टर वातावरण के लिए ehcache (play में समर्थित) या memcached (play द्वारा समर्थित भी) हो सकता है। आप परिणाम को एक स्थिर नाम + सत्र आईडी द्वारा सहेज सकते हैं। तो आपको प्रत्येक अनुरोध के लिए केवल सत्र आईडी की आवश्यकता है, यह क्लाइंट कुकी में सहेजा गया है और आपके प्ले ऐप में उपलब्ध है। आप ब्राउज़िंग पृष्ठों के लिए कैश किए गए डेटा का उपयोग कर सकते हैं। मैं लोचदार खोज की भी सिफारिश कर रहा हूं।

संपादित करें:

Query q = Search.search("object:dogs", Folder.class); 
q.orderBy("object") 
    .page(2,5) 
    .reverse(); 

पुनश्च:: एक बेहतर तरीका आप प्ले-खोज http://github.com/jfp/play-search, नमूना का उपयोग कर सकते है प्ले के साथ अपने निर्णय एकदम सही है। मैं एक पेशेवर .NET डेवलपर हूं और मैं दुनिया में एकमात्र (इष्टतम) वेब ढांचा कह सकता हूं जो एएसपीएनटी एमवीसी 2 के साथ दौड़ सकता है प्ले फ्रेमवर्क है। Grails छोटी गाड़ी है, Django/पायथन, Yii/Php, रेल सभी धीमी हैं, सुरक्षित प्रकार और जेवीएम/क्लियर ढांचे से दूर नहीं हैं। विकेट, टेपेस्ट्री, स्ट्रेट्स, जेएसएफ, वसंत एमवीसी सभी वर्बोज़ और बेकार हैं। वसंत आरयू केवल एक टेम्पलेट जनरेटर है। Asp.net mvc एएसपीनेट को पार कर गया और .NET के लिए # 1 विकास मंच बन गया, लेकिन सूरज ने अगली जेन, बड़ी गलती के लिए जेएसएफ के साथ पुराने एएसपीनेट क्लोन के लिए काम किया। जावा के लिए एकमात्र आशा मेरी राय में ढांचा है। स्कैला मॉड्यूल के साथ, यह सही है ...

+0

मैं तब कैशिंग सुविधा की थोड़ी सी जांच करूंगा। लेकिन खोज परिणाम किसी भी समय कैश से निकाल दिया जा सकता है, स्वतंत्र रूप से उपयोगकर्ता सत्र का समय समाप्त हो गया है या नहीं, नहीं? – ewernli

+1

play. जाने का रास्ता कैश करें ... play-search दिलचस्प लग रहा है, धन्यवाद! – qeek

+0

प्ले फ्रेमवर्क में कैश के बारे में दस्तावेज़ीकरण: http://www.playframework.org/documentation/1.1/cache – ewernli

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