Apache 在SOLR中显示片段前后的省略号

Apache 在SOLR中显示片段前后的省略号,apache,lucene,solr,solrnet,Apache,Lucene,Solr,Solrnet,我已经将SOLR配置为返回fragsize为500的片段 有时,整个字段不超过500个字符,因此片段与字段相同。对于长度超过该值的字段,SOLR只返回片段,而不指示(或者看起来是这样)片段只表示字段内容的一部分。这意味着片段可以在句子中间开始 我想让用户明白,他们看到的是一个片段,只是在片段的末尾和/或开头显示省略号。SOLR中是否内置了该功能?如果没有,您将如何插入省略号?Solr不会返回指示器,您是对的 将fragsize设置为501。然后,在您的UI中快速确定是否应显示省略号 将501到5

我已经将SOLR配置为返回fragsize为500的片段

有时,整个字段不超过500个字符,因此片段与字段相同。对于长度超过该值的字段,SOLR只返回片段,而不指示(或者看起来是这样)片段只表示字段内容的一部分。这意味着片段可以在句子中间开始


我想让用户明白,他们看到的是一个片段,只是在片段的末尾和/或开头显示省略号。SOLR中是否内置了该功能?如果没有,您将如何插入省略号?

Solr不会返回指示器,您是对的

将fragsize设置为501。然后,在您的UI中快速确定是否应显示省略号


将501到500之间的任何内容截断,并添加省略号

这里有另一个更好的方法。创建索引时,添加一个已应用此逻辑的“摘要”属性。把你的要求完全排除在外。这正是我要做的。

我最终要做的是返回片段和创建片段的未更改字段


然后我写了一些逻辑来比较两者,以确定是否应该在片段中添加省略号,如果是的话,是在片段之前、之后添加省略号,还是在片段之前和之后添加省略号。我这样做的方式如下:

  • 获取原始字符串
  • 获取原始字符串的前10个字符和后10个字符
  • 获取Solr搜索返回的片段的前10个字符和后10个字符
  • 比较两者,并在需要时填写一个变量

    $f_ellip = NULL;
    $l_ellip = NULL;
    if ($orig_body_beggining != substr((string)$hl_content->str, 0, 10)) {
        $f_ellip = "… ";
    }
    if ($orig_body_end != substr((string)$hl_content->str, 0, -10)) {
         $l_ellip = " …";
    }
    $entry_body = $f_ellip.(string)$hl_content->str.$l_ellip;
    

  • 是的,我只是希望有一个内在的方法来做到这一点。此外,这仍然让我面临一个问题,即不知道是在片段的开头还是结尾显示省略号(或两者都显示)。在索引时,您不知道字段的哪一部分匹配,因此,片段将是什么。我,太:)创建一个改进任务:大声思考-在索引字段值之前,是否可以用一些字符(可能是其中之一?)将字段值的开头和结尾包装起来,然后当突出显示值不包含该字符时,您可以改为添加省略号?