개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.14 20:46

SolrQuery::getHighlightHighlightMultiTerm 관련 질문

목록
  • AWS매니아 2일 전 2025.05.14 20:46
  • 5
    1
제가 현재 SolrQuery::getHighlightHighlightMultiTerm 메서드를 사용하여 멀티 터미널 하이라이트를 구현하고 있지만, 여러 개의 단어를 포함하는 문서에 하이라이트가 제대로 적용되지 않는 문제가 있습니다.

해당 메서드의 사용법을 다시 확인한 결과, 하이라이트 적용을 위한 필드 설정이 없을 경우 하이라이트가 제대로 작동하지 않는다는 것을 알게되었습니다.

해당 필드 설정은 어떻게 해야 하나요? 그리고 필드 설정을 통해 하이라이트를 적용하는 방법에 대해 알려주실 수 있을까요?

예를 들어, 멀티 터미널 하이라이트를 적용하고 싶은 필드가 "description" 필드일 경우, 필드 설정은 어떻게 해야 하는지 알려주시면 감사하겠습니다.

또한, 하이라이트를 적용하는 방법에 대해 자세한 예제를 알려주시면 공부하기에도 좋을 것입니다.

감사합니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    SolrQuery::getHighlightHighlightMultiTerm 메서드를 사용하여 멀티 터미널 하이라이트를 구현할 때, 하이라이트 필드 설정을 해야 합니다.

    하이라이트 필드 설정을 위해, Solr의 schema.xml 파일에 하이라이트 필드를 추가해야 합니다. 예를 들어, "description" 필드에 하이라이트를 적용하고 싶다면, schema.xml 파일에 다음과 같이 추가할 수 있습니다.

    #hostingforum.kr
    xml
    
    
    
    


    위의 설정에서, "multiTermOperator" 속성을 "OR"로 설정하면, 하이라이트가 제대로 작동합니다.

    하이라이트 필드를 설정한 후, SolrQuery::getHighlightHighlightMultiTerm 메서드를 사용하여 하이라이트를 적용할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $query = new SolrQuery();
    
    $query->addHighlightField('description');
    
    $query->setHighlightSnippetsSize(1);
    
    $query->setHighlightRequireFieldMatch(true);
    
    $query->setHighlightMultiTerm(true);
    
    
    
    $result = $client->query($query);
    
    


    위의 예제에서, "description" 필드에 하이라이트를 적용하고, 하이라이트의 크기를 1로 설정하고, 하이라이트가 필드와 일치해야 하도록 설정했습니다.

    또한, 하이라이트를 적용하는 방법에 대한 자세한 예제는 다음과 같습니다.

    #hostingforum.kr
    php
    
    $query = new SolrQuery();
    
    $query->addHighlightField('description');
    
    $query->setHighlightSnippetsSize(1);
    
    $query->setHighlightRequireFieldMatch(true);
    
    $query->setHighlightMultiTerm(true);
    
    
    
    $result = $client->query($query);
    
    
    
    foreach ($result->getResponse()->getResponse()->getDocuments() as $document) {
    
        $highlight = $document->getHighlight();
    
        foreach ($highlight as $field => $snippets) {
    
            echo "Field: $field, Snippets: " . implode(", ", $snippets) . "n";
    
        }
    
    }
    
    


    위의 예제에서, 하이라이트를 적용한 문서를 반복하여, 하이라이트 필드와 하이라이트 스니펫을 출력합니다.

    2025-05-14 20:47

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 19,899건 / 18 페이지

검색

게시물 검색