참고 :이 부분의 모든 코드와 Part 1 데모는 repo에서 찾을 수 있습니다.
이 기사에서는 1 부에서 보여준 데모를 확장하고 몇 가지 필수 측면 검색 기능을 추가합니다. <li>
<with> 다음 몇 줄을 추가하여 index.php로 시작하겠습니다.
</with>
</li>
<two> 우리는 데모 애플리케이션 (Silex 사용)에서 두 개의 경로를 더 만들었습니다. <li><is> 첫 번째 경로는 첫 번째 검색 동작과 일치하는 모든 레코드, 즉 키워드를 제공하여 검색하는 모든 레코드를 보여주는 페이지로 가져 오는 것입니다. 데모를 단순하게 유지하기 위해 샘플 Book_book 테이블에서 모든 책을 선택합니다. 또한 추가 내비게이션을 위해 결과 세트 및 측면 링크가 표시됩니다. <p>
<br> 두 번째 경로는 위의 단계에서 생성 된 결과 세트에서 추가 패싯 검색 기준과 일치하는 레코드를 보여주는 다른 페이지로 우리를 가져옵니다. 측면 검색 링크도 표시됩니다. </p>
<world> 실제 구현에서, 측면 링크를 클릭 한 후, 결과 페이지의 측면 필터링은 결과 데이터 세트의 통계 정보를 반영하도록 조정됩니다. 이렇게하면 사용자는 "애드온"상영을 적용하여 "브랜드"를 먼저 추가 한 다음 "가격 범위"등을 추가 할 수 있습니다.
<simple> 그러나이 간단한 데모에서는이 접근법을 건너 뛸 것입니다. 모든 측면 검색 및 링크는 원래 데이터 세트에 대한 정보 만 반영합니다. 이것은 첫 번째 제한 사항이며 데모의 개선을위한 첫 번째 영역입니다. <p>
위의 코드에서 알 수 있듯이 실제 함수는 Pinqdemo.php라는 다른 파일에 있습니다. Faceted 검색 기능을 제공하는 관련 코드를 보겠습니다. </p>
<class> 패싯 클래스
<create> 먼저, 우리는 패싯을 나타내는 클래스를 만듭니다. 일반적으로 패싯에는 몇 가지 속성이 있어야합니다
<p>
($ data)에서 작동하는 데이터 <oper>
<groups> 키는 ($ key) 를 그룹화합니다
키 유형 ($ 유형). 다음 중 하나 일 수 있습니다
정확한 일치를 만들기 위해 전체 문자열을 지정하십시오
<ial> 패턴 일치를 만들기 위해 문자열의 부분 (일반적으로 시작)을 지정하십시오.
<value> 값 범위별로 그룹에 값 범위를 지정합니다 <p> .
<type> 키 유형이 범위 인 경우 범위의 상한/하한을 결정하기위한 값 단계를 지정해야합니다. 또는 키 유형이 부분 문자열 인 경우, 그룹에 사용되어야하는 첫 번째 문자 수를 지정하려면 숫자를 제공해야합니다 ($ range)
</type></p>
<is> 그룹화는 패싯에서 가장 중요한 부분입니다. 패싯이 반환 할 수있는 모든 집계 정보는 "그룹화"기준에 따라 다릅니다. 일반적으로 "전체 문자열", "부분 문자열"및 "값 범위"는 가장 일반적으로 사용되는 것입니다.
<p>
이 클래스에서 핵심 기능은 데이터 및 패싯 키 속성을 기반으로 패싯 결과 세트를 반환하는 것입니다. 다양한 유형의 키에 대해 데이터를 그룹화하는 방법이 다르다는 것을 알았습니다. 위에서, 우리는 $ 범위로 지정된 단계에서 값 범위별로 데이터를 값 범위별로 그룹화하는 경우 코드의 모습을 보여주었습니다. </p>
<and> 패싯 만들기 및 원래 데이터 표시
<f> getfacet () 함수에서 다음 단계를 수행합니다<ul>
<data> 추가 처리를 위해 원래 데이터를 pinqtraversable 객체로 변환합니다.
<fac> 우리는 3 개의 패싯을 만듭니다. ‘저자’패싯은 필드 저자로 그룹화되며 전체 문자열 그룹입니다. 필드 제목의 '제목'면 및 부분 문자열 그룹화 (시작 6 문자 수); 현장 가격 및 범위 그룹화 (10 단계)의 '가격'면.
<get> 마지막으로, 패싯을 가져 와서 템플릿이 데이터와면을 렌더링 할 수 있도록 테스트 2 기능으로 되돌립니다. <li>
</li>
<fac> 패싯과 필터링 된 데이터를 표시
<time> 대부분의 시간, 패싯은 링크로 표시되어 필터링 된 데이터 세트로 가져옵니다. </time></fac></get></fac></data>
</ul></f></and></is></value></ial></groups></oper></p></create></class></simple></world></is></li>
<created> 우리는 이미 패싯 검색 결과와 패싯 링크를 표시하기 위해 경로 ( 'demo2/facet/{key}/{value}')를 이미 만들었습니다. <li>
<two> 경로는 두 개의 매개 변수를 사용하여 우리가 끄는 키와 해당 키의 값을 반영합니다. 결국 해당 경로에서 호출되는 Test3 기능은 아래에서 발췌됩니다.
</two>
</li>
<dep> 기본적으로, 키에 따라, 우리는 전달 된 값에 해당하는 필터링 (Where Clause의 익명 함수)을 적용하고 추가 스크리닝 된 데이터를 얻습니다. 패싯 데이터의 순서를 지정할 수도 있습니다. </dep></created></two>
제한
index.php의 코드를 살펴보면 이것이 아래 코드 라인을 의미합니다.
위 내용은 PINQ- 데이터 세트 - 측면 검색 쿼리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!