solr सोलर हाइलाइटिंग भी मूल फ़ील्ड के भीतर लौटे टुकड़ों की स्थिति या ऑफसेट का संकेत दे सकता है?



highlighting (1)

कुछ प्रकार के अनुकूलन करने के अलावा हाइलाइटिंग परिणामों के साथ टुकड़ों की ऑफसेट जानकारी वापस करने का कोई तरीका नहीं है

ऐसा लगता है कि आपके पास कुछ विकल्प हैं:

1) आप सॉलर हाइलाइटर को एक कस्टम फॉर्मेट बनाकर बढ़ा सकते हैं जो स्ट्रिंग में ऑफ़सेट जानकारी को एनकोड करते हैं। TokenGroup जो प्रत्येक शब्द के लिए TokenGroup में पारित किया जाता है, उसमें ऑफसेट और स्थिति की जानकारी संग्रहीत होगी यदि आपके फ़ॉर्मेटर ने <span data-offset=X>text</span> या कुछ इसी तरह वापस किया है, तो यह एक तरीका होगा। यह सबसे आसान नहीं लगता है।

2) जैसा आपने कहा था, पूरे क्षेत्र को hl.fragsize=0 का उपयोग करके वापस hl.fragsize=0

3) एक अतिरिक्त अनुरोध में TermVectorsComponent का उपयोग करें और हाइलाइट किए गए टुकड़ों के साथ ऑफसेट / स्थिति जानकारी को लौटाया।

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

पृष्ठभूमि

सोलर 4.0.0 का उपयोग करना मैंने नमूना दस्तावेजों के एक सेट के पाठ को अनुक्रमित किया है और सक्षम वेक्टर को सक्षम किया है ताकि मैं फास्ट वेक्टर हाइलाइटिंग का उपयोग कर सकूं

<field name="raw_text" type="text_en" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />

हाइलाइट करने के लिए मैं ब्रेक इटरेटर सीमा स्कैनर का उपयोग SENTENCE सीमाओं के साथ कर रहा हूं।

<boundaryScanner name="breakIterator" class="solr.highlight.BreakIteratorBoundaryScanner">
    <lst name="defaults">
      <!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->
      <str name="hl.bs.type">SENTENCE</str>
    </lst>
  </boundaryScanner>

मैं एक साधारण क्वेरी करता हूँ

http://localhost:8983/solr/documents/select?q=raw_text%3AArtibonite&wt=xml&hl=true&hl.fl=raw_text&hl.useFastVectorHighlighter=true&hl.snippets=100&hl.boundaryScanner=breakIterator

हाइलाइटिंग काफी अच्छी तरह से काम कर रहा है

<response>
...
<result name="response" numFound="5" start="0">
<doc>
  <str name="id">-1071691270</str>
  <str name="raw_text">
     Final Report of the Independent Panel of Experts on the Cholera
     Outbreak in Haiti Dr. Alejando Cravioto (Chair) International
     Center for Diarrhoeal Disease Research, Dhaka, Bangladesh Dr.
     Claudio F. Lanata Instituto de Investigación Nutricional, and
     The US Navy Medical Research Unit 6, Lima, Peru Engr. Daniele
     S. Lantagne Harvard University... ~SNIP~
  </str>
<doc>
<lst name="highlighting">
  <lst name="-1071691270">
    <arr name="raw_text">
      ...
      <str>
        The timeline suggests that the outbreak spread along
        the <em>Artibonite</em> River. After establishing that
        the cases began in the upper reaches of the Artibonite
        River, potential sources of contamination that could have
        initiated the outbreak were investigated.
      </str>
      ...
    </arr>
  </lst>
</lst>

मुसीबत

मैं आगे की प्रक्रिया (निकासी निकासी आदि) के लिए परिणामी वाक्यों को भेजने में सक्षम होना चाहता हूं, लेकिन मैं मूल (लंबे) टेक्स्ट फ़ील्ड के भीतर हाइलाइट किए गए वाक्य के प्रारंभ / अंत ऑफसेट को ट्रैक करना चाहता हूं। क्या ऐसा करने के लिए सीधा तरीका है?

क्या पूरे क्षेत्र को वापस करने के लिए hl.fragsize को सेट करना बेहतर होगा और फिर इस तरह से ब्याज के वाक्यों की प्रक्रिया / निकालें?