MDL-52989 mod_lesson: Fix cluster_jump returning a cluster page id.
[moodle.git] / search / upgrade.txt
blobddc5efcc77c7fad4af7352c3678d1f186eea9d93
1 This files describes API changes in /search/*,
2 information provided here is intended especially for developers.
4 === 3.5 ===
6 * Search areas may now optionally implement the get_contexts_to_reindex function (for modules and
7   blocks, see also get_contexts_to_reindex_extra_sql). This allows a search area to customise the
8   order in which it is reindexed when doing a gradual reindex, so as to reindex the most important
9   contexts first. If not implemented, the default behaviour for modules and blocks is to reindex
10   the newest items first; for other types of search area it will just index the whole system
11   context, oldest data first.
13 * Module search areas that wish to support group filtering should set the new optional search
14   document field groupid (note: to remain compatible with earlier versions, do this inside an if
15   statement so that it only happens on 3.4+) and return true to the supports_group_restriction
16   function. See documentation in \core_search\base_mod class and example in \mod_forum\search\post.
18 * When a search engine supports group filtering, the \core_search\manager::search function now
19   accepts the optional 'groupids' parameter in its $data input. This parameter is an array of one
20   or more group IDs. If supplied, only results from those groups will be returned.
22 * Search engine plugins will need to be be modified if they wish to support group filtering.
23   (Search engines should continue to work unmodified, but will not then support group filtering.)
24   The modification steps are:
25   - Implement the new update_schema function to make the schema change (add groupid field).
26   - Ensure that the groupid field is stored correctly when provided in a document while indexing.
27   - Return true to new supports_group_filtering() function.
28   - execute_query should support the new $data->groupids parameter (to allow users to restrict
29     search results to specific groups) and the modified meaning of the second parameter,
30     $accessinfo (to automatically restrict search results users cannot access due to groups).
31     See implementation in Solr search engine.
33 === 3.4 ===
35 * Search indexing now supports time limits to make the scheduled task run more neatly. In order for
36   this to work, search engine plugins will need to implement the 'stopat' parameter if they
37   override the add_documents() function, and return an extra parameter from this function (see base
38   class in engine.php). Unmodified plugins will still work, but without supporting time limits.
39 * Search areas should now implement the get_document_recordset function instead of the old
40   get_recordset_by_timestamp API (implement both if the area should work in older Moodle versions
41   as well). The new function is the same as the old one, but has an additional context parameter.
42   There is a helper function get_context_restriction_sql to make this easy to implement; see code
43   in base_activity.php for an example of how to implement this in your search area. (The
44   change was required to make search work after restoring sites. It also allows more flexible
45   reindexing in other cases.)
47 === 3.2 ===
49 * Base search area classes have been renamed, please update your search areas to use the classes below:
50   - \core_search\area\base has been renamed to \core_search\base
51   - \core_search\area\base_mod has been renamed to \core_search\base_mod
52   - \core_search\area\base_activity has been renamed to \core_search\base_activity