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

Reply via email to