mirror of
https://github.com/silverstripe/silverstripe-fulltextsearch
synced 2024-10-22 12:05:29 +00:00
Add an extension hook to allow altering search results
This commit is contained in:
parent
1ddf008592
commit
034171270f
@ -795,7 +795,13 @@ abstract class SolrIndex extends SearchIndex
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ArrayData($ret);
|
$ret = new ArrayData($ret);
|
||||||
|
|
||||||
|
// Enable extensions to add extra data from the response into
|
||||||
|
// the returned results set.
|
||||||
|
$this->extend('updateSearchResults', $ret, $res);
|
||||||
|
|
||||||
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -335,6 +335,50 @@ The searched term is highlighted with an `<em>` tag by default.
|
|||||||
Note: It is recommended to strip out all HTML tags and convert entities on the indexed content,
|
Note: It is recommended to strip out all HTML tags and convert entities on the indexed content,
|
||||||
to avoid matching HTML attributes, and cluttering highlighted content with unparsed HTML.
|
to avoid matching HTML attributes, and cluttering highlighted content with unparsed HTML.
|
||||||
|
|
||||||
|
### Adding additional information into search results
|
||||||
|
|
||||||
|
Inside the SolrIndex::search() function, the third-party library solr-php-client
|
||||||
|
is used to send data to Solr and parse the response. Additional information can
|
||||||
|
be pulled from this response and added to your results object for use in templates
|
||||||
|
using the `updateSearchResults()` extension hook.
|
||||||
|
|
||||||
|
$index = new MyIndex();
|
||||||
|
$query = new SearchQuery();
|
||||||
|
$query->search('My Term');
|
||||||
|
$results = $index->search($query, -1, -1, array(
|
||||||
|
'facet' => 'true',
|
||||||
|
'facet.field' => 'SiteTree_ClassName',
|
||||||
|
));
|
||||||
|
|
||||||
|
By adding facet fields into the query parameters, our response object from Solr
|
||||||
|
now contains some additional information that we can add into the results sent
|
||||||
|
to the page.
|
||||||
|
|
||||||
|
<?php
|
||||||
|
class MyResultsExtension extends Extension {
|
||||||
|
/**
|
||||||
|
* Adds extra information from the solr-php-client repsonse
|
||||||
|
* into our search results.
|
||||||
|
* @param $results The ArrayData that will be used to generate search
|
||||||
|
* results pages.
|
||||||
|
* @param $response The solr-php-client response object.
|
||||||
|
*/
|
||||||
|
function updateSearchResults($results, $response) {
|
||||||
|
$facetCounts = array();
|
||||||
|
if (isset($response->facet_counts)) {
|
||||||
|
foreach ($response->facet_counts as $facet => $count) {
|
||||||
|
$facetCounts[] = new ArrayData(array(
|
||||||
|
'Name' => $facet,
|
||||||
|
'Count' => $count,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$results->setField('FacetCounts', new ArrayList($facetCounts));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
We can now access the facet information inside our templates.
|
||||||
|
|
||||||
### Adding Analyzers, Tokenizers and Token Filters
|
### Adding Analyzers, Tokenizers and Token Filters
|
||||||
|
|
||||||
When a document is indexed, its individual fields are subject to the analyzing and tokenizing filters that can transform and normalize the data in the fields. For example — removing blank spaces, removing html code, stemming, removing a particular character and replacing it with another
|
When a document is indexed, its individual fields are subject to the analyzing and tokenizing filters that can transform and normalize the data in the fields. For example — removing blank spaces, removing html code, stemming, removing a particular character and replacing it with another
|
||||||
|
Loading…
x
Reference in New Issue
Block a user