1. Go to this page and download the library: Download teppokoivula/search-engine library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
teppokoivula / search-engine example snippets
if ($q = $sanitizer->selectorValue($input->get->q)) {
// This finds pages matching the query string and returns them as a PageArray:
$results = $pages->find('search_index%=' . $q . ', limit=25');
// Render results and pager with PageArray::render() and PageArray::renderPager():
echo $results->render(); // PageArray::render()
echo $results->renderPager(); // PageArray::renderPager()
// ... or you iterate over the results and render them manually:
echo "<ul>";
foreach ($results as $result) {
echo "<li><a href='{$result->url}'>{$result->title}</a></li>";
}
echo "</ul>";
}
// This performs the query and returns a \SearchEngine\Query object:
$query = $modules->get('SearchEngine')->find($input->get->q);
// This object can be rendered manually, or you can use \SearchEngine\Renderer to render it:
// (First param is an array of custom arguments, second is the Query object.)
echo $modules->get('SearchEngine')->renderResults([], $query);
// All indexable pages:
$modules->get('SearchEngine')->indexPages();
// Indexable pages matching a selector string:
$modules->get('SearchEngine')->indexPages('template=basic-page');
// Alternatively index just a single page (passing in a Page object):
$modules->get('SearchEngine')->indexPage($page);
$config->SearchEngine = [
// Index field defines the field to store indexed data in. Default value is "search_index".
'index_field' => 'search_index',
// This is an array of all the fields you want to index. Currently there is no way to
// index "all compatible fields", but such an option may be added in the future. (This
// is, in fact, a matter of security: by indexing *all* fields you could inadvertently
// expose sensitive data.)
'indexed_fields' => [
// ...
],
// This is an array of fieldtypes that the module should be considered compatible with.
// You should only modify these values if you're sure that the field in question is
// indeed compatible with the indexing process.
'compatible_fieldtypes' => [
// ...
],
// Currently prefixes contains just the "link" prefix – more may be added in the future.
'prefixes' => [
// The "link" prefix is added to indexed links and enables "link:https://..." queries.
'link' => 'link:',
],
// Find arguments are pretty self-explanatory. These are the defaults and apply only to
// SearchEngine::find(); custom selectors are not affected.
'find_args' => [
'limit' => 20,
'sort' => 'sort',
'operator' => '*=',
'query_param' => 'q',
// The "selector_extra" option is appended to automatically generated selector string.
// You might use this to, for example, return just a subset of all indexed templates.
'selector_extra' => '',
],
// This array is passed directly to the MarkupPagerNav core module, see
// https://processwire.com/docs/front-end/markup-pager-nav/ for more details.
'pager_args' => [
// ...
],
// Render arguments affect the rendered output from the SearchEngine module.
'render_args' => [
// At the moment there's only one "theme" available ("default").
'theme' => 'default',
// By default theme-files (styles and scripts) are served minified; setting
// this option to `false` will serve unmodified, original assets instead.
'minified_resources' => true,
// Various attributes used by the search form and results list when rendered.
'form_action' => './',
'form_id' => 'se-form',
'form_input_id' => 'se-form-input',
'results_summary_id' => 'se-results-summary',
'results_id' => 'se-results',
// Summary of each result (in the search results list) is the value of this field.
'result_summary_field' => 'summary',
// Highlighting basically wraps each instance of the search term in the summary
// text with a predefined tag and class (default element is `<strong></strong>`).
'results_highlight_query' => true,
// These settings define the fields used when search results are rendered as JSON.
'results_json_fields' => [
'title' => 'title',
'desc' => 'summary',
'url' => 'url',
],
// This integer is passed to the json_encode call in renderResultsJSON method.
// See https://www.php.net/json_encode for supported values.
'results_json_options' => 0,
// This defines whether a pager should be rendered at the end of the results list.
'pager' => true,
// Array of classes to use in templates. You can add new classes here as well.
'classes' => [
// ...
],
// Array of strings to use in templates. You can add new classes here as well. Note
// that most of these are `null` in the $defaultOptions array; the reason for this
// is simply that methods cannot be called when declaring class properties, so the
// values are set in SearchEngine::__construct().
'strings' => [
// ...
],
// Template strings. These are used to render markup on the site.
'templates' => [
// ...
],
],
// Currently the