Solr的高亮能也表明原来的领域内返回的片段偏移的位置或?(Can Solr highlightin

2019-08-04 02:12发布

背景

使用Solr的4.0.0。 我已经收录了一组样本文件的文本并启用项向量,所以我可以使用快速向量高亮

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

为突出我使用的是打破边界的Iterator用扫描仪句子边界。

<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返回整场再处理/提取所关注的句子这样?

Answer 1:

有没有办法除了做一些类型的定制返回与突出成绩的片段的偏移信息。

你似乎几个选项:

1)您可以通过创建编码的偏移信息到字符串自定义格式扩展Solr的荧光笔。 该TokenGroup即到格式化每学期通过将已经抵消并存储在它的位置信息。 如果您的格式返回<span data-offset=X>text</span>或类似的东西,那么这将是一个办法。 这似乎并不是最直接的

2)至于你说,使用返回整个字段hl.fragsize=0

3)使用TermVectorsComponent在附加的请求并映射来自其与高亮片段返回的偏移/位置信息。

如果你是无论如何做你自己的碎片,你最好的办法可能是要么Solr中做0破碎和自己处理这一切。 另外,您也可以实现自己的BoundaryScanner实现在Java中使用实体提取自己的专业知识在分手片段。



文章来源: Can Solr highlighting also indicate the position or offset of the returned fragments within the original field?