Thank you for the update, Stas. Forwarding to the Discovery mailing list. Pine On Feb 12, 2016 01:06, "Stas Malyshev" <[email protected]> wrote:
> Hi! > > In order to make prefix search better, and to bring all variants of > prefix search under one roof, we did some refactoring in the search > engine implementation, so that various prefix searches now use the same > code path and all use the SearchEngine class. > > The changes are as follows: > > SearchEngine gets the following new API functions: > > * public function completionSearch( $search ) - implements prefix > completion search, returns SearchSuggestionSet > * public function completionSearchWithVariants( $search ) - implements > prefix completion search including variants handling, returns > SearchSuggestionSet. > * public function defaultPrefixSearch( $search ) - basic prefix search > without fuzzy matching, etc., to be used in scenarios like special pages > search, etc. Returns Title[]. > > The implementation does not have to implement all three methods > differently, they can all use the same code if needed. > > The default implementation still supports the PrefixSearchBackend hook > but we plan to deprecate it, and the CirrusSearch implementation does > not use it anymore. Instead, there is a private function, protected > function completionSearchBackend( $search ), which implementations > (including CirrusSearch) should implement to provide search results. > > SearchEngine implementations can make use of services provided by the > base SearchEngine including: > > - namespace resolution and normalization. The > PrefixSearchExtractNamespace hook is still supported for engines wishing > to implement namespace lookup not featured in the standard implementation. > - fetching titles for result sets (the implementing engine does not have > to fetch titles from DB for suggestions) > - result reordering to ensure exact matches are on top > - basic prefix search implementation using the database > - Special: namespace search implementation > > == Deprecations == > We plan to deprecate the PrefixSearchBackend hook and classes > TitlePrefixSearch and StringPrefixSearch. We will keep those classes > around for basic search fallback implementation and for old extensions, > but no new code should be using these classes, instead they should use > SearchEngine APIs described above. Mediawiki code has already been fixed > to do that. Extensions implementing search engines should also extend > SearchEngine and override the APIs above. CirrusSearch is the example of > how to do it. > > == Show me the code == > The patches implementing the refactoring are linked from: > https://phabricator.wikimedia.org/T121430 > > Pretty version of the same: > https://www.mediawiki.org/wiki/User:Smalyshev_(WMF)/Suggester > > If you have questions on this, please contact the Discovery team: > https://www.mediawiki.org/wiki/Wikimedia_Discovery#Communications > -- > Stas Malyshev > [email protected] > > _______________________________________________ > Wikitech-l mailing list > [email protected] > https://lists.wikimedia.org/mailman/listinfo/wikitech-l
_______________________________________________ discovery mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/discovery
