> 백엔드 개발 > PHP 튜토리얼 > 검색 용 Solarium 사용 - 고급

검색 용 Solarium 사용 - 고급

William Shakespeare
풀어 주다: 2025-02-21 10:20:13
원래의
444명이 탐색했습니다.

검색 용 Solarium 사용 - 고급 이것은 Apache의 Solr Search 구현과 함께 Solarium과 함께 Apache의 Solr 검색 구현을 사용하는 시리즈의 네 번째이자 마지막 부분입니다. 처음 세 부분에서 우리는 Solr 및 Solarium을 설치하고 구성하고 영화 검색을위한 예제 응용 프로그램을 구축하기 시작했습니다. 우리는 또한 Faceted Search를 살펴 보았습니다.

우리는 Solr의 고급 기능과 Solarium과 함께 사용하는 방법을 살펴보면 시리즈를 마무리 할 것입니다. 키 테이크 아웃

는 Solarium과 함께 Solr에서 강조 표시 기능을 사용하여 문서에 일치하는 단어 나 문구를 표시하여 검색 결과 가시성을 향상시켜 전체 및 스 니펫 기반 강조 옵션을 제공합니다. Solr의 Suggester 구성 요소를 사용하여 자동 완성 기능을 검색 애플리케이션에 통합하여 패턴 매칭을 위해 인덱스 필드를 분석하여 쿼리 용어를 동적으로 제안합니다. 태양에서 쿼리를 설정하기 위해 배열 기반 구성을 사용하여 검색 매개 변수 및 결과 처리를 자세히 사용자 정의 할 수 있습니다. 다른 데이터 세트 또는 검색 기준을 효율적으로 처리하기 위해 특정 디렉토리 및 구성 파일을 작성하는 추가 코어를 추가하여 Solr의 기능을 확장합니다. Synonyms.txt 및 stopwords.txt와 같은 추가 구성 파일로 Solr 동작을 사용자 정의하여 검색 엔진의 쿼리 언어 이해 및 처리를 미세 조정하고 검색 관련 및 정확도를 향상시킵니다.

solr 로 결과를 강조 표시합니다 강조 구성 요소를 사용하면 검색과 일치하는 문서의 일부를 강조 표시 할 수 있습니다. 표시되는 내용에 대한 동작은 필드에 따라 다릅니다. 제목의 기회라면 일치하는 단어가있는 단어와 기사의 시놉시스 나 기사의 본문과 같은 더 긴 필드가 있습니다. 단어를 사용하지만 스 니펫 사용; Google의 검색 결과와 마찬가지로. 강조 표시를 설정하려면 먼저 포함 할 필드를 지정해야합니다. 그런 다음 강조 표시된 단어 나 문구에 대한 접두사 및 해당 PostFix를 설정할 수 있습니다. 예를 들어, 강조 표시된 단어와 문구를 대담하게 만들려면 :

또는 배경색을 추가하려면 :

또는 필드 당 설정을 사용할 수도 있습니다

검색 구현에서 강조 구성 요소를 구성한 후에는 검색 결과보기에서이를 표시하는 데 약간의 작업이 있습니다. 먼저, ID에 의해 강조 표시된 구성 요소에서 강조 표시된 문서를 추출해야합니다.
    이제 강조 표시된 문서의 속성으로 강조 표시된 필드에 반복하여 모든 강조 표시된 필드에 액세스 할 수 있습니다.
  • 또는 getfield () : 를 사용할 수 있습니다
    $hl = $query->getHighlighting();
    $hl->setFields(array('title', 'synopsis'));
    $hl->setSimplePrefix('<strong>');
    $hl->setSimplePostfix('</strong>');
    
    로그인 후 복사
    로그인 후 복사
    강조된 필드는 단순히 텍스트를 반환하지는 않지만 대신 텍스트의 "스 니펫"배열을 반환합니다. 특정 필드와 일치하지 않는 경우 (예 : 검색이 제목에서 일치하지만 시놉시스가 아닌 경우에 해당 배열이 비어 있습니다. ). 위의 코드는 최대 한 스 니펫을 반환합니다. 이 동작을 변경하려면 setsnippets () 메소드를 사용할 수 있습니다.

    예를 들어 "별"이라는 단어를 검색한다고 가정 해 봅시다. 결과 중 하나에는 다음과 같이 읽는 시놉시스가 있습니다.

    이 영화가 놓치지 않는 영화관 이벤트는 TV 역사상 가장 기억에 남는 순간 중 하나와 세계 최고의 세계와 스타 트렉 : 차세대 시즌 3. 24 세기에 설정된 독점 클립을 특징으로합니다. 다음 세대는 원래 Star Trek 시리즈 후 20 년 동안 Gene Roddenberry에 의해 만들어졌습니다. 차세대는 7 시즌 동안 178 개의 에피소드로 구성된 Star Trek 프랜차이즈의 가장 긴 달리기 시리즈가되었습니다. Star Trek : The Next Generation-The Best of Best of Both Worlds는 전국의 일부 영화관에서 영광스럽게 리마스터 된 전장 기능으로 모든 시간 중 가장 큰 TV 에피소드 중 하나 인 두 세계의 최고를 볼 수있는 첫 번째 기회입니다. >

    강조 표시된 문서의 시놉시스 어레이에는 에 세 가지 항목이 포함됩니다

    세계 최고와 스타 트렉의 최고 제작에 관한 역사와 독점 클립 ​​: 차세대 $hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>'); 원래 Star Trek 시리즈 이후 . 다음 세대는 스타의 가장 긴 달리기 시리즈가되었습니다. 7 시즌 동안 178 개의 에피소드로 구성된 Trek 프랜차이즈. Star Trek : 차세대 - 최고

    여러 스 니펫을 표시하는 한 가지 방법은 예를 들어 다음과 같이 청소하는 것입니다.
    이것은 다음과 같은 결과를 초래합니다

    세계 최고의 세계와 스타 트렉 : 차세대… 다음 세대는 7 시즌 동안 178 개의 에피소드로 구성된 Trek 프랜차이즈의 가장 긴 달리기 시리즈가되었습니다. Star Trek : 차세대 - 최고

    여기에 설명 된 하이라이트 구성 요소의 동작을 수정하는 데 사용할 수있는 여러 가지 매개 변수가 있습니다. 영화 검색에 강조 표시를 통합합니다 이제 우리는 하이라이트를 사용하는 방법을 다루었으므로 영화 검색 응용 프로그램에 통합해야합니다. 가장 먼저해야 할 일은 검색을 실행하기 직전에 다음을 추가하여 앱/컨트롤러/homecontroller.php를 수정하는 것입니다.

    그런 다음 검색 결과는 앱/뷰/home/index.blade.php에 있습니다.

    $hl = $query->getHighlighting();
    $hl->setFields(array('title', 'synopsis'));
    $hl->setSimplePrefix('<strong>');
    $hl->setSimplePostfix('</strong>');
    
    로그인 후 복사
    로그인 후 복사
    각 검색 결과가 기본적으로 검색 결과 문서와 강조 표시된 문서 간의 필드를 본질적으로 혼합하고 일치시키는 방법에 주목하십시오. 후자는 효과적으로 전자의 하위 집합입니다. 스키마에 따라 강조 표시된 버전으로 모든 필드를 사용할 수 있습니다. Suggester - AutoComplete 추가

    Suggester 구성 요소는 불완전한 쿼리 입력을 기반으로 쿼리 용어를 제안하는 데 사용됩니다. 기본적으로 주어진 필드의 인덱스를 검사하고 특정 패턴과 일치하는 검색어를 추출합니다. 그런 다음 주파수별로 해당 제안을 주문하여 검색의 관련성을 높일 수 있습니다.

    Suggester를 설정하려면 SolrConfig.xml 파일에서 구성해야합니다. 열기는 다른 선언 근처에 XML의 다음 스 니펫을 배치하십시오 :

    당신은 "맞춤법 체크"에 대한 여러 참조를 보게 될 것입니다. 그러나 이것은 단순히 Suggester 구성 요소가 내부적으로 그 기능의 많은 부분을 재사용하기 때문입니다.

    . 주목해야 할 중요한 비트는 항목입니다.이 항목은 구성 요소에 제목 필드를 사용하여 제안을 기반으로합니다. Solr을 다시 시작하면 이제 웹 브라우저를 통해 제안 쿼리를 실행해보십시오 : .

    (Solr 설정 방법에 따라 포트 번호를 변경해야 할 수도 있습니다) 출력은 다음과 비슷해 보일 것입니다

    보시다시피, Solr은 "ho" - 및 공포에도 불구하고 알파벳에서
    $hl = $query->getHighlighting();
    $hl->setFields(array('title', 'synopsis'));
    $hl->setSimplePrefix('<span style="background:yellow;">');
    $hl->setSimplePostfix('</span>');
    
    로그인 후 복사
    하우스

    이전에 있음에도 . 이 구성 요소를 사용하여 검색 상자에 자동 완성을 만들어 봅시다. 이는 사용자가 쿼리를 입력 할 때 일반적인 검색어를 제안합니다. 먼저, 경로를 정의하십시오 :

    레이아웃에 jquery ui (및 jQuery 자체)를 포함하십시오 :

    jQuery UI 테마 포함 :

    그리고 마지막으로 autocomplete를 초기화하기 위해 js를 추가하십시오 :

    그게 전부입니다. 몇 가지 검색을 실행하여 시도해보십시오. 배열 기반 구성 원하는 경우 배열을 사용하여 쿼리를 설정할 수 있습니다.

    추가 코어 추가 스타트 업에서 Solr은 Core.Propeties라는 파일을 찾을 때 식별하는 코어를 찾는 지정된 홈 디렉토리를 가로 지릅니다. 지금까지 Collection1이라는 코어를 사용했으며 세 가지 주요 항목이 포함되어 있음을 알 수 있습니다. Core.Propertes 파일. 가장 기본적으로, 그것은 단순히 인스턴스의 이름을 포함합니다.
    $hl = $query->getHighlighting();
    $hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>');
    $hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
    
    로그인 후 복사
    conf 디렉토리에는 인스턴스의 구성 파일이 포함되어 있습니다. 최소한이 디렉토리는 schema.xml 및 solrconfig.xml 파일을 포함해야합니다. 데이터 디렉토리는 인덱스를 보유합니다. 이 디렉토리의 위치는 재정의 될 수 있으며 존재하지 않으면 생성됩니다. 새 인스턴스를 만들려면 다음 단계를 따르십시오

    그 에서 conf 디렉토리를 만듭니다 conf directory에서 schema.xml 파일과 solrconfig.xml 파일을 만들거나 복사하고 그에 따라 사용자 정의하십시오. 다음 내용이있는 홈 디렉토리에서 Core.Properties라는 텍스트 파일을 만듭니다.

    이름 = instanceName 예제 디렉토리에서 선박을 제공하는 schema.xml 구성에는 여러 텍스트 파일 (예 : stopwords.txt, protwords.txt 등)에 대한 참조가 포함되어 있습니다. 그런 다음 Solr을 다시 시작하십시오 웹 브라우저의 관리 웹 인터페이스를 통해 새로운 코어를 추가 할 수도 있습니다. 왼쪽의 코어 관리자를 클릭 한 다음 코어를 추가하십시오. 추가 구성 언급할만한 몇 가지 추가 구성 파일이 있습니다.

    stopwords.txt 파일, 또는 더 구체적으로 Lang/stopwords_en.txt와 같은 언어 별 파일에는 검색 인덱서에서 "a", "the"및 "at"과 같은 검색어에 의해 무시되어야하는 단어가 포함되어 있습니다. . 대부분의 경우이 파일을 수정할 필요가 없을 것입니다.

    응용 프로그램에 따라 protwords.txt에 단어를 추가해야 할 수도 있습니다. 이 파일에는 "줄기"가 아닌 보호 된 단어 목록이 포함되어 있습니다. 즉, 기본 형식으로 축소되었습니다. 예를 들어,“묻는”것이“Ask”가되고,“작업”은“일”이됩니다. 때로는 단어를“올바른”단어로 만들려고 시도하고, 아마도 그것이 생각하는 것이 잘못된 숫자의 문자라고 생각하는 것을 제거 할 수도 있습니다. 당신은 지리적 영역을 다루고 있으며“메인”이“메인”으로 기울어 져 있음을 알게 될 것입니다.
      당신은 동의어로 동의어 - 동의어 - 동의어를 지정할 수 있습니다. 일별적으로 쉼표와 동의어를 분리하십시오. 예를 들면 :
    1. 당신은 또한 synoyms.txt를 사용하여 동의어 매핑을 사용하여 일반적인 철자 오류를 수정하는 데 도움이 될 수도 있습니다.
    2. 통화 필드를 사용하는 경우 Converrency.xml을 업데이트하고 주시 할 수 있습니다.이 예제 환율을 지정합니다.
    3. 요약 이 시리즈에서는 Apache의 Solr 구현을 검색하고 PHP Solarium 라이브러리를 사용하여 상호 작용했습니다. 예제 스키마와 함께 Solr을 설치하고 구성했으며 Solr의 여러 기능을 보여주는 영화 세트를 검색하도록 설계된 응용 프로그램을 구축했습니다. 우리는 Faceted Search, 결과 및 DISAX 구성 요소를 강조한 검색을 살펴 보았습니다. 바라건대 이것은 응용 프로그램에서 검색을 위해 Solr을 사용하기 위해 적응할 수있는 충분한 접지를 제공합니다. 추가 판독 값을 위해 Solr Reference 안내서를 PDF로 다운로드하거나 Solarium Documentation을 참조하십시오. 고급 검색을 위해 Solr과 함께 Solarium을 사용하는 것에 대한 자주 묻는 질문 (FAQ) Solr 및 Solarium을 사용하여 자동 완성을 구현하려면 어떻게해야합니까?

      Solr 및 Solarium으로 자동 완성 된 구현에는 Solr 구성 파일에 Suggester를 생성하는 것이 포함됩니다. 이 제안자는 사용자 쿼리에 대한 제안을 제공하는 데 사용됩니다. Suggester가 설치되면 Solarium의 Suggester 쿼리를 사용하여 제안을받을 수 있습니다. Suggester Query는 사용자의 입력을 기반으로 제안 목록을 반환 한 다음 사용자에게 표시 할 수 있습니다.

      Solarium과 Stellarium의 차이점은 무엇입니까?

      Solarium과 Stellarium은 2입니다. 다른 소프트웨어. Solarium은 강력한 검색 플랫폼 인 Solr과 상호 작용하기위한 API를 제공하는 PHP 라이브러리입니다. 반면, Stellarium은 컴퓨터를위한 무료 오픈 소스 플라네타륨입니다. 그것은 육안, 쌍안경 또는 망원경으로 보는 것과 마찬가지로 3D의 현실적인 하늘을 보여줍니다.

      솔라륨을 사용하여 Solr을 쿼리하기 위해 어떻게?

      를 사용하여 Solarium을 사용하여 Solr을 쿼리하십시오. 먼저 Solr 서버 구성으로 클라이언트 인스턴스를 작성해야합니다. 그런 다음 클라이언트의 CreateSelect 함수를 사용하여 선택 쿼리를 만들 수 있습니다. 리턴 할 필드, 쿼리 문자열 및 필터와 같은 쿼리에서 다양한 매개 변수를 설정할 수 있습니다. 쿼리가 설정되면 클라이언트의 실행 함수를 사용하여 쿼리를 실행할 수 있습니다.이 기능은 개별 문서에 액세스하기 위해 반복 할 수있는 결과 세트를 반환합니다.

      Solarium을 사용하여 Solr에 문서를 추가하려면 어떻게해야합니까?

      Solarium을 사용하여 Solr에 문서를 추가하려면 먼저 Solr Server의 구성으로 클라이언트 인스턴스를 작성해야합니다. 그런 다음 클라이언트의 CreateUpDate 함수를 사용하여 업데이트 쿼리를 만들 수 있습니다. AddDocument 함수를 사용 하여이 쿼리에 문서를 추가 할 수 있으며 문서 인스턴스를 인수로 가져옵니다. 문서 인스턴스에는 문서에 추가 할 모든 필드와 값이 있어야합니다. 모든 문서가 쿼리에 추가되면 클라이언트의 실행 함수를 사용하여 쿼리를 실행할 수 있습니다.

      Solarium을 사용하여 Solr에서 문서를 삭제하려면 Solarium을 사용하여 Solr에서 문서를 삭제하는 방법 먼저 Solr 서버 구성으로 클라이언트 인스턴스를 작성해야합니다. 그런 다음 클라이언트의 CreateUpDate 함수를 사용하여 업데이트 쿼리를 만들 수 있습니다. AddDeleteByID 또는 AddDeleteByQuery 함수를 사용 하여이 쿼리에 삭제 명령을 추가 할 수 있습니다. 모든 삭제 명령이 쿼리에 추가되면 클라이언트의 실행 함수를 사용하여 실행할 수 있습니다. Solarium을 사용하여 Solr Index를 최적화하려면 Solarium을 사용하여 Solr Index를 최적화하려면 먼저 Solr Server의 구성으로 클라이언트 인스턴스를 생성해야합니다. 그런 다음 클라이언트의 CreateUpDate 함수를 사용하여 업데이트 쿼리를 만들 수 있습니다. AddOptimize 함수를 사용 하여이 쿼리에 최적화 명령을 추가 할 수 있습니다. 최적화 명령이 쿼리에 추가되면 클라이언트의 실행 함수를 사용하여 실행할 수 있습니다.

      Solr과 함께 Solarium을 사용할 때 오류를 처리 할 수 ​​있습니까?

      Solr, 오류를 사용하면 오류가 발생할 수 있습니다. 클라이언트의 실행 기능이 던진 Solarium_Exception을 잡음으로써 처리 할 수 ​​있습니다. 이 예외는 오류 메시지 및 Solr 응답과 같은 오류에 대한 정보가 포함됩니다.

      Solarium 및 Solr과 함께 패싯을 사용하려면 어떻게해야합니까?

      Solarium 및 Solr과 함께 패싯을 사용하십시오. 먼저 클라이언트의 CreateSelect 함수를 사용하여 선택 쿼리를 만들어야합니다. 그런 다음 AddFacetSet 함수를 사용하여 쿼리에 세트를 추가 할 수 있습니다. 필드 패싯, 쿼리 패싯 및 범위면과 같은 패싯 세트에 다양한 유형의 패싯을 추가 할 수 있습니다. 패싯이 설정되면 클라이언트의 실행 함수를 사용하여 쿼리를 실행할 수 있습니다.이 기능은 패싯 결과가 포함 된 결과 세트를 반환합니다.

      Solarium 및 Solr과 함께 강조 표시를 어떻게 사용할 수 있습니까?

      Solarium 및 Solr과 함께 페이지 매김을 어떻게 사용할 수 있습니까?

      Solarium 및 Solr로 Pagination을 사용하려면 먼저 클라이언트의 CreateSelect 기능을 사용하여 선택 쿼리를 작성해야합니다. 그런 다음 쿼리에서 시작 및 행 매개 변수를 설정하여 리턴 할 결과 범위를 지정할 수 있습니다. 시작 매개 변수는 반환 할 첫 번째 결과의 인덱스를 지정하고 행 매개 변수는 반환 할 결과 수를 지정합니다. 페이지 매김이 설정되면 클라이언트의 실행 함수를 사용하여 쿼리를 실행할 수 있으며, 이는 지정된 결과 범위가 포함 된 결과 세트를 반환합니다.

위 내용은 검색 용 Solarium 사용 - 고급의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿