代码之家  ›  专栏  ›  技术社区  ›  Stefan

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

  •  6
  • Stefan  · 技术社区  · 14 年前

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

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

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

    4 回复  |  直到 14 年前
        1
  •  1
  •   Stefan    14 年前

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

        2
  •  0
  •   kareem    14 年前

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

        3
  •  0
  •   fholgado    14 年前

    我刚处理了同样的问题。我的做法如下:

    1. 获取原始字符串的前10个字符和后10个字符
    2. 获取Solr搜索返回的片段的前10个字符和后10个字符
    3. $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;
      
        4
  •  -1
  •   kareem    14 年前

    这是另一个更好的方法。在创建索引时,添加一个已应用此逻辑的“摘要”属性。把这种努力从你的要求中完全排除。我就是这么做的。