Pergunta

Eu tenho Solr configurado para retornar fragmentos com um fragsato de 500.

Às vezes, todo o campo tem 500 caracteres ou menos, portanto o fragmento é idêntico ao campo. Para os campos que são mais longos do que isso, Solr apenas retorna o fragmento sem nenhuma indicação (ou assim parece) de que o fragmento representa apenas parte do conteúdo de um campo. Isso significa que o fragmento pode começar no meio da frase.

Quero deixar claro para os usuários que eles estão olhando para um fragmento e simplesmente exibir elipseis no final e/ou início desse fragmento. Essa funcionalidade é incorporada ao Solr? Caso contrário, como você iria inserir elipsis?

Foi útil?

Solução

O que acabei fazendo foi retornar o fragmento e o campo inalterado do qual o fragmento foi criado.

Em seguida, escrevi uma lógica que comparou os dois para determinar se as elipsis devem ser adicionadas ao fragmento e, em caso afirmativo, adicioná -lo antes, depois ou antes e depois do fragmento.

Outras dicas

Solr não retornará um indicador, você está certo.

Defina seu fragsato como 501. Então é um pouco de lógica na sua interface do usuário para determinar se as elipsis devem ser exibidas ou não.

Truque qualquer coisa 501 a 500 e adicione elipsis.

Acabei de lidar com o mesmo problema. A maneira como eu fiz isso é o seguinte:

  1. Obtenha a corda original
  2. Obtenha os primeiros e os últimos 10 caracteres da string original
  3. Obtenha os primeiros e os últimos 10 caracteres do fragmento retornados pela pesquisa do Solr
  4. Compare os dois e preencha uma variável quando necessário!

    $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;
    

Aqui está outra abordagem melhor. Ao criar o índice, adicione um atributo "teaser" que já tem essa lógica já aplicada. Empurre esse esforço para fora de seus pedidos. É exatamente assim que eu faria isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top