문제 : Search API를 사용하여 프로그래밍 방식으로 자체 검색을 실행해야합니다. 내가 찾은 모든 Google 결과는 개발자가 아닌 개발자에게 원하는대로 결과를 보지 않고 Views로 모듈을 사용하는 방법을 가르치는 데 중점을 둡니다.
정보:
- Solr 또는 다른 시스템 대신 로컬 데이터베이스 서비스를 사용합니다.
- 다른 결과와 함께 나타날 데이터를 데이터베이스에 저장하지 마십시오.
- 내용은 "유형"탭으로 그룹화됩니다.
- 여러 가지 이유로 뷰를 사용하지 않습니다.
- Facets API를 사용하도록 설정했지만 사용 방법에 대한 실마리는 없습니다.
이유 : 검색 페이지가 / site-search에 있고 페이지 인수 뒤에 / node / keyword가 없어야하기 때문입니다. 또한 동일한 유형의 기능을 제공 할 수있는 다른 모듈의 범위를 넘어서이를 사용자 정의해야합니다. 그리고 나는 이것을하는 법을 배우고 싶지만 그것을 성취하는 방법에 대한 튜토리얼이나 다른 통찰력을 찾지 못했습니다.
나머지 : 검색 페이지를 만들었고 다음을 사용하여 검색을 실행합니다.
$term = $_SESSION['my-search']['term'];
$server = search_api_server_load('database');
$index = search_api_index_load('default_node_index');
$query = new SearchApiQuery($index);
$query->keys($term);
$query->fields(array('title','body:value'));
$srv= new SearchApiDbService($server);
$result = $srv->search($query);
세션 변수는 검색 양식이 제출 될 때 설정되고 사용자를 / site-search로 리디렉션하여 검색을 수행하고 결과를 표시합니다.
$ result를 출력하면 노드 ID와 점수로 구성된 결과 집합을 포함하여 다른 정보를 가진 배열임을 알 수 있습니다.
그것들을 통해 노드를 잡고 결과를 직접 표시 할 수는 있지만 검색 결과를 렌더링하는 다른 방법이 있어야한다고 생각합니다. 나는 그것을 찾지 못했고 그것이 문제입니다.
Search API 및 Facet API의 다른 클래스를 살펴본 결과 결과 출력을 작성하는 것처럼 보이는 클래스를 찾을 수 없습니다.
이에 대한 도움을 주시면 감사하겠습니다.
결과 예 :
Array
(
[result count] => 11
[results] => Array
(
[37] => Array
(
[id] => 37
[score] => 15.7503318786621
)
[39] => Array
(
[id] => 39
[score] => 7
)
[40] => Array
(
[id] => 40
[score] => 5
)
[31] => Array
(
[id] => 31
[score] => 4
)
[33] => Array
(
[id] => 33
[score] => 1
)
[36] => Array
(
[id] => 36
[score] => 1
)
[1] => Array
(
[id] => 1
[score] => 1
)
[15] => Array
(
[id] => 15
[score] => 1
)
[16] => Array
(
[id] => 16
[score] => 1
)
[27] => Array
(
[id] => 27
[score] => 1
)
[35] => Array
(
[id] => 35
[score] => 0.980873763561249
)
)
[warnings] => Array
(
)
[ignored] => Array
(
)
[performance] => Array
(
[complete] => 0.0033111572265625
[preprocessing] => 0.00053095817565918
[execution] => 0.0027379989624023
[postprocessing] => 4.2200088500977E-5
)
)