Từ phiên bản RC4, bạn có thể sử dụng makeServletRequest () để tạo các truy vấn solr tùy chỉnh. Xem một số ví dụ trên GitHub .
Dưới đây là một số ví dụ mã:
// Ping example
// class_exists('Apache_Solr_Service') ?: spl_autoload_register('_search_api_solr_autoload'); // make sure that SolrPhpClient class is loaded (use only for <=rc3)
$server = search_api_server_load('my_solr_server'); // CHANGE THIS
$solr = new SearchApiSolrService($server);
$result = $solr->ping();
drupal_set_message(print_r($result, TRUE));
// Simple search query (not fully tested)
// class_exists('Apache_Solr_Service') ?: spl_autoload_register('_search_api_solr_autoload'); // make sure that SolrPhpClient class is loaded (use only for <=rc3)
$server = search_api_server_load('my_solr_server'); // CHANGE THIS
$index = search_api_index_load('my_index'); // CHANGE THIS
$query = new SearchApiQuery($index);
$query->keys('foo');
$query->fields(array('title'));
$solr = new SearchApiSolrService($server);
$result = $solr->search($query);
drupal_set_message(print_r($result, TRUE));
// Custom path example for rc4 and above (not fully tested)
$server = search_api_server_load('my_solr_server');
$uri = SearchApiSolrConnection::LUKE_SERVLET . "?show=schema"; // or any other custom URL
$connection = $server->getSolrConnection(); // or: new SearchApiSolrService($server)
$response = $connection->makeServletRequest($uri);
drupal_set_message(print_r($response, TRUE));
// Example for assembling the right URL
$server = search_api_server_load('my_solr_server');
$url = 'http://' . $server->options['host'] . ':' . $server->options['port'] . $server->options['path'];
Mã ở trên đã được thử nghiệm trong hook_init với Drupal 7 và API tìm kiếm Solr [rc3] .
Mua
Nếu bạn đang sử dụng Acquia, bạn có thể sử dụng Acquia-Search-Proxy cho phép bạn gửi các truy vấn tùy chỉnh đối với Tìm kiếm của Acquia (Apachesolr + Tìm kiếm API Solr). Xem thêm nhánh của tôi về Acquia-Search-Proxy bao gồm một số cải tiến bổ sung.
Ví dụ truy vấn tùy chỉnh thông qua CLI:
PATH_INFO="/admin/ping" php search-proxy.php
PATH_INFO="/admin/luke" QUERY_STRING="show=schema" php search-proxy.php
PATH_INFO="/select" QUERY_STRING="q=foo" php search-proxy.php
PATH_INFO="/admin/file" QUERY_STRING="contentType=text/xml;charset=utf-8&file=schema.xml" php search-proxy.php