1 |
efrain |
1 |
This files describes API changes in /search/*,
|
|
|
2 |
information provided here is intended especially for developers.
|
|
|
3 |
|
|
|
4 |
=== 4.2 ===
|
|
|
5 |
|
|
|
6 |
* Support for optional final element returned by engine `add_documents()` implementations is now removed, all
|
|
|
7 |
six expected returned array elements must be present
|
|
|
8 |
|
|
|
9 |
=== 3.10 ===
|
|
|
10 |
|
|
|
11 |
* Search indexing now supports sending multiple documents to the server in a batch. This is implemented
|
|
|
12 |
for the Solr search engine, where it significantly increases performance. For this to work, engines
|
|
|
13 |
should implement add_document_batch() function and return true to supports_add_document_batch().
|
|
|
14 |
There is also an additional parameter returned from add_documents() with the number of batches
|
|
|
15 |
sent, which is used for the log display. Existing engines should continue to work unmodified.
|
|
|
16 |
* Search engines can now implement the optional has_alternate_configuration() function to indicate
|
|
|
17 |
if they provide two different connection configurations (for use when moving between two search
|
|
|
18 |
engines of the same type). The constructor should also accept a boolean value (true = alternate);
|
|
|
19 |
passing this to the base class constructor will automatically switch in the alternate
|
|
|
20 |
configuration settings, provided they begin with 'alternate'.
|
|
|
21 |
|
|
|
22 |
=== 3.8 ===
|
|
|
23 |
|
|
|
24 |
* Search indexing supports time limits to make the scheduled task run more neatly since 3.4. In order for
|
|
|
25 |
this to work, search engine plugins will need to implement the 'stopat' parameter if they
|
|
|
26 |
override the add_documents() function, and return an extra parameter from this function (see base
|
|
|
27 |
class in engine.php). Unmodified plugins will not work anymore.
|
|
|
28 |
* New search engine functions delete_index_for_context and delete_index_for_course are called by
|
|
|
29 |
the search manager to inform the search engine it can remove some documents from its index.
|
|
|
30 |
(Otherwise, documents from delete courses are never removed unless you reindex.) It is optional
|
|
|
31 |
for search engines to support these; if they don't implement them then behaviour is unchanged.
|
|
|
32 |
|
|
|
33 |
=== 3.7 ===
|
|
|
34 |
|
|
|
35 |
* Search areas now have categories and can optionally implement get_category_names method to
|
|
|
36 |
display search results of the area in the required tab on the search results screen (if this
|
|
|
37 |
feature is enabled).
|
|
|
38 |
* Added a new call back search_area_categories. Plugins can implement this method in lib.php and
|
|
|
39 |
return a list of custom search area categories (\core_search\area_category) and associated with
|
|
|
40 |
them search areas. This will bring additional custom tabs to the search results screen.
|
|
|
41 |
* Added \core_search\manager::clean_up_non_existing_area method to clean up removed or renamed
|
|
|
42 |
search areas. To support that a new adhoc task core\task\clean_up_deleted_search_area_task
|
|
|
43 |
added.
|
|
|
44 |
|
|
|
45 |
=== 3.5 ===
|
|
|
46 |
|
|
|
47 |
* Search areas may now optionally implement the get_contexts_to_reindex function (for modules and
|
|
|
48 |
blocks, see also get_contexts_to_reindex_extra_sql). This allows a search area to customise the
|
|
|
49 |
order in which it is reindexed when doing a gradual reindex, so as to reindex the most important
|
|
|
50 |
contexts first. If not implemented, the default behaviour for modules and blocks is to reindex
|
|
|
51 |
the newest items first; for other types of search area it will just index the whole system
|
|
|
52 |
context, oldest data first.
|
|
|
53 |
* Search engines may now implement get_supported_orders function to provide multiple ordering
|
|
|
54 |
options (other than 'relevance' which is default). If there is more than one order then a choice
|
|
|
55 |
will be shown to users. (This is an optional feature, existing search engine plugins do not need
|
|
|
56 |
to be modified in order to continue working.)
|
|
|
57 |
* Module search areas that wish to support group filtering should set the new optional search
|
|
|
58 |
document field groupid (note: to remain compatible with earlier versions, do this inside an if
|
|
|
59 |
statement so that it only happens on 3.4+) and return true to the supports_group_restriction
|
|
|
60 |
function. See documentation in \core_search\base_mod class and example in \mod_forum\search\post.
|
|
|
61 |
* When a search engine supports group filtering, the \core_search\manager::search function now
|
|
|
62 |
accepts the optional 'groupids' parameter in its $data input. This parameter is an array of one
|
|
|
63 |
or more group IDs. If supplied, only results from those groups will be returned.
|
|
|
64 |
* Search engine plugins will need to be be modified if they wish to support group filtering.
|
|
|
65 |
(Search engines should continue to work unmodified, but will not then support group filtering.)
|
|
|
66 |
The modification steps are:
|
|
|
67 |
- Implement the new update_schema function to make the schema change (add groupid field).
|
|
|
68 |
- Ensure that the groupid field is stored correctly when provided in a document while indexing.
|
|
|
69 |
- Return true to new supports_group_filtering() function.
|
|
|
70 |
- execute_query should support the new $data->groupids parameter (to allow users to restrict
|
|
|
71 |
search results to specific groups) and the modified meaning of the second parameter,
|
|
|
72 |
$accessinfo (to automatically restrict search results users cannot access due to groups).
|
|
|
73 |
See implementation in Solr search engine.
|
|
|
74 |
* Search engine plugins can optionally use a new $this->should_skip_schema_check() function to
|
|
|
75 |
decide when to skip slow schema checking inside the is_server_ready function, improving user
|
|
|
76 |
performance on the search page. The Solr plugin implements this.
|
|
|
77 |
* API function \core_search\manager::instance() now includes a $fast parameter to skip schema
|
|
|
78 |
checks (as above).
|
|
|
79 |
|
|
|
80 |
* Search engines should now implement the 'userids' option to restrict search results to those from
|
|
|
81 |
specific users, and return true to the new supports_users() function. The supplied Solr search
|
|
|
82 |
engine includes this feature. If this is not implemented, the search engine will continue to work
|
|
|
83 |
but the 'Users' search option will not appear.
|
|
|
84 |
|
|
|
85 |
=== 3.4 ===
|
|
|
86 |
|
|
|
87 |
* Search indexing now supports time limits to make the scheduled task run more neatly. In order for
|
|
|
88 |
this to work, search engine plugins will need to implement the 'stopat' parameter if they
|
|
|
89 |
override the add_documents() function, and return an extra parameter from this function (see base
|
|
|
90 |
class in engine.php). Unmodified plugins will still work, but without supporting time limits.
|
|
|
91 |
* Search areas should now implement the get_document_recordset function instead of the old
|
|
|
92 |
get_recordset_by_timestamp API (implement both if the area should work in older Moodle versions
|
|
|
93 |
as well). The new function is the same as the old one, but has an additional context parameter.
|
|
|
94 |
There is a helper function get_context_restriction_sql to make this easy to implement; see code
|
|
|
95 |
in base_activity.php for an example of how to implement this in your search area. (The
|
|
|
96 |
change was required to make search work after restoring sites. It also allows more flexible
|
|
|
97 |
reindexing in other cases.)
|
|
|
98 |
|
|
|
99 |
=== 3.2 ===
|
|
|
100 |
|
|
|
101 |
* Base search area classes have been renamed, please update your search areas to use the classes below:
|
|
|
102 |
- \core_search\area\base has been renamed to \core_search\base
|
|
|
103 |
- \core_search\area\base_mod has been renamed to \core_search\base_mod
|
|
|
104 |
- \core_search\area\base_activity has been renamed to \core_search\base_activity
|