web-dev-qa-db-ja.com

プログラムでノード検索を実行する

プログラムでノード検索を実行することは可能ですか?多分 NodeSearch または Drupal\search

私が得ることができる最も近いものは、プログラムで次のようなことをすることでした:

\Drupal::service('search.index')->clear();

echo \Drupal::service('plugin.manager.search')->getCacheMaxAge();

search_apiを使用したくないことに注意してください。ただし、単にDrupal 8は/search/node?keys=testへの応答として箱から出して提供します。また、 HTTP経由で統合したい。

4
cherouvim

node_search idを使用して、検索ページエンティティで使用される検索プラグインでこれを実現できます。

use Drupal\search\Entity\SearchPage;

// Default is the node_search page.
$id = \Drupal::service('search.search_page_repository')->getDefaultSearchPage();
$defaultSearchPage = SearchPage::load($id);
$searchPlugin = $defaultSearchPage->getPlugin();
$searchPlugin->setSearch($keywords, $parameters, $arguments);
$searchPlugin->buildResults(); // $searchPlugin->execute() works too if you want raw results
6
XenoVkl