이것은 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의 다음 스 니펫을 배치하십시오 :
.
주목해야 할 중요한 비트는 항목입니다.이 항목은 구성 요소에 제목 필드를 사용하여 제안을 기반으로합니다.
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”가되고,“작업”은“일”이됩니다. 때로는 단어를“올바른”단어로 만들려고 시도하고, 아마도 그것이 생각하는 것이 잘못된 숫자의 문자라고 생각하는 것을 제거 할 수도 있습니다. 당신은 지리적 영역을 다루고 있으며“메인”이“메인”으로 기울어 져 있음을 알게 될 것입니다.
당신은 동의어로 동의어 - 동의어 - 동의어를 지정할 수 있습니다. 일별적으로 쉼표와 동의어를 분리하십시오. 예를 들면 : -
위 내용은 검색 용 Solarium 사용 - 고급의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!