2011-07-01 18 views
12

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

अनिवार्य रूप से मैं एक उपयोगकर्ता को एक टेक्स्ट दस्तावेज़ के साथ प्रस्तुत करना चाहता हूं और उसे टेक्स्ट का चयन करने और उसे एनोटेट करने की अनुमति देता हूं। एनोटेशन के लिए विशिष्ट मैं निम्नलिखित प्राप्त करना:

  1. फिर बाद में
  2. (यूआई) समर्थन ओवरलैप एनोटेशन का प्रतिनिधित्व करने में संदर्भ के लिए चयन और एनोटेशन बचाने के उपयोगकर्ताओं के लिए एक पाठ चयन करने के लिए, उस पर टिप्पणी की अनुमति दें। उदाहरण के लिए यदि स्ट्रिंग कहां है: "यह मेरे उदाहरण परीक्षण वाक्य के लिए परीक्षण वाक्य है", उपयोगकर्ता 1 पर "मेरे उदाहरण के लिए परीक्षण वाक्य" पर एक टिप्पणी हो सकती है और उपयोगकर्ता 2 "मेरे उदाहरण के लिए" पर एक टिप्पणी हो सकती है।
  3. ऐसी स्थितियों के लिए खाता जहां दस्तावेज़ का टेक्स्ट बदलता है। यदि संभव हो तो एनोटेशन अपडेट किया जाएगा।

आप इसे तकनीकी परिप्रेक्ष्य से कैसे निपटेंगे?

कुछ विचार मैं लिया है कर रहे हैं:

  • उपयोग जावास्क्रिप्ट पर्वतमाला और की तरह कुछ पूर्णांकों की एक जोड़ी के रूप में एक एनोटेशन की दुकान: (document_start_char, document_end_char)। इस जोड़ी को डीबी में सहेजें।
  • वैकल्पिक रूप से, जेएस का उपयोग करके पाठ को चुना जाता है और वास्तव में डीबी में पूरा पाठ सहेजता है। (सुनिश्चित नहीं है कि मैं फिर एनोटेशन ओवरलैपिंग कैसे करूं)
  • टेक्स्ट को हाइलाइट करने के लिए एक सीएसएस शैली को लागू करके ओवरलैप्ड एनोटेशन का प्रतिनिधित्व करें, फिर एनोटेशन के "स्टैक" को अंधेरा करें जहां वे ओवरलैप करते हैं। सबसे छोटी टिप्पणी हमेशा "ढेर" के शीर्ष पर होना चाहिए।

आपके विचार या सुधार के क्षेत्र क्या हैं? हेक कैसे मैं सभी एनोटेशन को तोड़ने के बिना किसी दस्तावेज़ के पाठ को अपडेट किया जा सकता है?

+0

मेरे पास बिल्कुल वही आवश्यकता है। Pls हमें आपकी प्रगति पर अद्यतन रखें एसपी – swami

+0

इस समय मैं क्या कर रहा हूं एक अद्वितीय आईडी के साथ एक ही अवधि में हर एक चरित्र के आसपास है। मैं चयन को पकड़ने के लिए रंगी (http://code.google.com/p/rangy/) का उपयोग करता हूं, फिर आईडी निकालें ताकि मुझे पता चले कि कौन से वर्ण चुने गए हैं। ऐसा करने से मुझे कुछ आजादी मिलती है क्योंकि मेरे पास चयनों को लापरवाही करने की ज़रूरत है और दृश्यों के पीछे कुछ फैंसी चीजें कर सकते हैं जैसे कि एनोटेशन के सूट में कितनी बार एक अक्षर की व्याख्या की गई है और तदनुसार इसके पृष्ठभूमि रंग को समायोजित करें (चयन ओवरलैपिंग का प्रतिनिधित्व करने के लिए)। –

+0

ओह मैं एक चीज़ भूल गया ... मुझे अभी तक यह पता लगाना है कि दस्तावेज स्वयं संपादित होने पर सभी एनोटेशन को अपडेट करने के तरीके को कैसे संभालना है, लेकिन मुझे लगता है कि इसके बारे में जाने का एक अच्छा तरीका दस्तावेज़ को अद्वितीय में विभाजित करना है पैराग्राफ, या वाक्य या ऐसा कुछ। क्षति को अलग करना उस मामले में लक्ष्य होगा लेकिन यह सही नहीं होगा। –

उत्तर

3

http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html

http://mark.koli.ch/2009/09/05/get-selected-text-javascript.html

चयनित पाठ प्राप्त करना आसान है। इसे संग्रहीत करना (या इसके शुरुआती/समापन बिंदु) भी एक मजाक है। लेकिन आपके पॉइंट नंबर 3 के बारे में क्या? क्या होगा अगर पाठ बदलता है?

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

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

जितना संभव हो सके उतने पैराग्राफ में टेक्स्ट दस्तावेज़ को विभाजित करना चाहिए, इस तरह आप दस्तावेज़ के विभिन्न टुकड़ों को अलग कर सकते हैं और एक-एक करके काम कर सकते हैं।

अब मैं इसे देखना चाहता हूं! :)

+0

प्रश्न का पालन करें - क्या एक nosql डीबी पाठ (ओवर और ओवर) को संग्रहीत करने के लिए एक फायदेमंद विकल्प होगा? –

5

मैं इस प्रश्न का शोध कर रहा हूं और व्यक्तिगत रूप से मैं Annotator जैसे मौजूदा ओपन सोर्स लाइब्रेरी के पक्ष में अपना खुद को रोल करने से दूर रहना चाहता हूं।

+0

यह आश्चर्यजनक है। धन्यवाद!! –