6

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

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

我想向用户说明他们正在查看一个片段,并且只是在此类片段的末尾和/或开头显示省略号。该功能是否内置于 SOLR 中?如果没有,您将如何插入省略号?

4

4 回答 4

1

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

然后我写了一些逻辑来比较两者,以确定是否应该将省略号添加到片段中,如果是,是否在片段之前、之后或之前和之后添加省略号。

于 2010-09-30T12:26:58.533 回答
0

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

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

    $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;
    
于 2010-10-18T01:17:58.653 回答
0

Solr 不会返回指标,你是对的。

将您的 fragsize 设置为 501。然后在您的 UI 中使用一些快速逻辑来确定是否应显示省略号。

截断任何 501 到 500 并添加省略号。

于 2010-08-08T14:44:07.663 回答
-1

这是另一种更好的方法。在创建索引时,添加一个已应用此逻辑的“预告片”属性。将这种努力完全排除在您的请求之外。我就是这样做的。

于 2010-08-10T11:20:05.080 回答