Commit Graph

69 Commits

Author SHA1 Message Date
Paul Holden 5021b3a5b5 MDL-68776 search: remove support for optional add_documents return.
All six returned array elements must now be present.
2023-02-10 10:41:50 +00:00
Cameron Ball c9769197cd MDL-76820 core_search: Reset manager::$coursedeleting between tests 2023-01-12 10:43:29 +08:00
Neill Magill e86bc4921e MDL-71115 search: Only replace course search when equivalent
Not all global search configurations offer the same results as the
default course search does.

The default course search will return courses that the user can see
the details of even if they can see them via a category, even if
they are not enrolled and cannot enrol themselves on it.

The equivalent global search configuration is:

* Global search is enabled
* The course indexing is enabled
* All the name and summary of all courses are included in the results

This patch will only let global search replace the default course
search when those criteria are met.

It will also display on the global search configuration page if global
search will replace the legacy course search.
2021-11-10 09:11:19 +00:00
Nathan Nguyen 089ebc85b1 MDL-60917 core_search: add top result section 2021-10-12 14:49:36 +11:00
Marina Glancy 881b4258f7 MDL-70897 various: uasort callback can not return bool
Co-authored-by: Ruslan Kabalin <ruslan.kabalin@gmail.com>
2021-04-20 14:58:25 +01:00
Paul Holden e7e62a4b2e MDL-62707 search: account for no matching courses when listing areas.
When limiting the list of courses during retrieval of the search areas
the user can access, make sure we have some contexts before looking
for blocks.
2020-12-04 09:42:59 +00:00
Eloy Lafuente (stronk7) 19070b2e01 MDL-69521 core: Move all comments in code from 4.4 to 4.2 2020-09-08 18:59:47 +02:00
Eloy Lafuente (stronk7) 6a60111199 MDL-69521 core: Move all comments in code from 4.0 to 3.10 2020-09-06 17:00:25 +02:00
sam marshall 679e8d8b66 MDL-68729 Search: Allow query on one server while indexing another
To support transitions from one search engine to a different one, or
to a different installation of the same kind, this feature allows for
queries to use a different search engine from indexing. So you can
reindex (and do all other search operation) on one server, while
user queries are unaffected on a different server.

This feature supports changing between search engine types, and also
between two Solr installations.
2020-08-06 12:12:01 +01:00
sam marshall 0deb19468d MDL-68690 Search: Allow Solr to add documents in batches
Adding documents in batches instead of one at a time can make
indexing using Solr significantly faster.

This adds new API functions for search engines, including
add_document_batch() to add a batch of documents,
supports_add_document_batch(), get_batch_max_documents() and
get_batch_max_content().
2020-07-10 11:32:46 +01:00
sam marshall 7ba2a20166 MDL-66326 Global search: Delete from index when courses are deleted
Adds new API support within search engines for optional methods to
delete data for courses and contexts, and implements this for the
two core search plugins (simpledb and solr).

The new API is automatically called when courses or contexts are
deleted. When a whole course is deleted, it only sends the course
delete rather than sending 1,000 separate context deletions as
each activity/block is deleted.
2019-08-23 11:51:50 +01:00
Sagar Ghimire 36667548b5 MDL-60916 core_course: Replace course search with global search 2019-08-05 16:05:10 +10:00
sam marshall ed73ff2b0e MDL-66132 Search: Behat tests should use simpledb, fix mock count
When searching using mock results (the 'global search expects the
query' step), the result count is not correctly set. As a result, the
page incorrectly reports that there are no results and doesn't
correctly show the first page of multi-page results.

Additionally, some of the core Behat tests can now be moved to use
real searching with the simpledb engine, rather than using mock
results at all. This gives better tests.

Unfortunately it was not possible to move all of the core Behat tests
and deprecate the mock step, because some of the tests are related to
the UI for 'special' features searching by user or group, neither of
which are supported by the simpledb engine.
2019-07-12 15:31:30 +01:00
Amaia Anabitarte c5b2f2b306 MDL-59502 Global Search: deprecate add_documents 4 arg implementation
In MDL-59039 we introduced changes to add_documents and should return an extra $partial boolean.
We still supported implementations returning 4 elements since then,
but  this issue is about removing this 4 returned elements compatibility.
2019-06-20 18:58:17 +02:00
Eloy Lafuente (stronk7) 7c924d311d Merge branch 'MDL-64284-36_get_component_classes_cache' of https://github.com/tomdickman/moodle 2019-04-11 20:01:37 +02:00
Marina Glancy beff3806d6 MDL-10965 courses: capability to browse course list 2019-04-10 12:35:28 +02:00
Tom Dickman 0d6a45d2fe MDL-64284 core: improved performance of component class searching
Added static caching of classes to reduce load times and reduce calls to `get_component_classes`
by altering to accept a null component value to search classmap only once.
2019-03-29 11:44:43 +11:00
Dmitrii Metelkin 2085e8603a MDL-62869 search: implement searching for all courses 2019-03-01 07:18:37 +11:00
Dmitrii Metelkin e9074ee381 MDL-60913 search: add search area categories 2019-01-23 10:28:43 +11:00
David Monllao 26b86f31e5 MDL-61028 search: Clear search engine users cache after tests 2018-04-24 15:48:40 +02:00
David Monllao c5a8065258 Merge branch 'MDL-61028-master' of https://github.com/sammarshallou/moodle 2018-04-23 13:09:53 +02:00
sam marshall 222a97ce76 MDL-61028 core_search: Allow filtering search by user (back-end, Solr)
Adds support in the Solr engine for a new 'userids' parameter to
restrict search results to those created by a specific user or users.
2018-04-20 13:36:55 +01:00
sam marshall 73fd56663b MDL-61102 core_search: Improve performance by reducing schema checks 2018-04-18 16:24:51 +01:00
sam marshall a539e5605c MDL-61824 core_search: Deleting restored context caused error
When restoring content, this adds it to a queue for indexing. If the
restored content was then deleted before the indexing takes place,
this caused an exception in the scheduled task.

This change makes it continue safely past missing contexts.
2018-04-09 16:36:30 +01:00
sam marshall fc440796e9 MDL-59434 core_search: Alternate result orders including by context
Implements a mechanism by which search engines can provide different
result orderings, and implements a 'by location' ordering within the
Solr search engine (available whenever the user starts their search
from within a course or activity).
2018-03-20 12:15:25 +00:00
sam marshall 4359ef18bb MDL-58885 core_search: Add group support
Adds group support to the core search API and the Solr search engine.
This allows for:

* User searching by group (in the API only, no interface yet)
* Automatically restrict search results by group (in some cases like
  separate-groups forums)
2018-02-16 16:57:00 +00:00
sam marshall 65da6840f8 MDL-60981 core_search: UI to gradually reindex a single area
Adds a new 'Gradual reindex' link to the search areas page for each
area. When clicked, this takes you to a confirm prompt, and then
adds each context from that search area to the indexing queue.

The search areas page now displays the 'Additional indexing queue'
(if it is non-empty). The table shows the first 10 items in the
queue, and it also indicates the total number in case there are
more. (I don't think people really need to see the entire
contents of it, so I didn't implement paging.)
2017-12-22 13:05:11 +00:00
sam marshall 8736fbc190 MDL-60981 core_search: New indexpriority field in search index queue
Adds indexpriority field to the database table which holds a queue of
indexing requests. This allows for potentially large area reindexes
to have a lower priority, so as not to halt the special indexes that
run after a course restore.
2017-12-22 13:05:10 +00:00
Damyon Wiese 97812f14c1 Merge branch 'MDL-60880-master' of https://github.com/sammarshallou/moodle 2017-12-06 19:53:37 +13:00
sam marshall cfa00fc565 MDL-60880 core_search: Allow search of specific context (back-end)
Adds back-end support for restricting searches to specified context
ids (for example so it is possible to search only a specific forum).
2017-12-05 17:42:38 +00:00
sam marshall 1b8cf12a59 MDL-60857 core_search: Improve cron log progress information 2017-12-01 15:47:22 +00:00
Adam Olley 7f83e99e5f MDL-60707 core_search: In tests, use faked time for indexing length
Without this change its possible that the unit tests will fail at any time.
Before this change the indexing time is measured by real-time, not fake time,
making all index timings 0.

This happens as PHP offers no guarantee around the sort-order of an array for
any given two members that equate as equal. It just happens to pass for the
current array of search areas in vanilla Moodle.
2017-11-09 10:49:53 +10:30
sam marshall 82735dec4d MDL-60555 core_search: Change unit tests to use fake time
Using real time caused rare failures. I've changed it to use fake
measurement for the indexing timeouts, which were unit-tested.
2017-10-31 14:48:09 +00:00
Andrew Nicols e61ad18e70 Merge branch 'MDL-55356-master' of https://github.com/sammarshallou/moodle 2017-10-12 11:28:04 +08:00
sam marshall 74b7a42d0d MDL-55356 core_search: Make indexing task/CLI do context requests 2017-10-11 17:17:10 +01:00
sam marshall 4ba11aa907 MDL-55356 core_search: New manager API index_context
New function which uses the get_document_recordset function in
search areas to support full and partial indexing of a given
context.
2017-10-11 17:17:10 +01:00
sam marshall eacb2bd11b MDL-55356 core_search: API to queue contexts for indexing
New API \core_search\manager::request_index($context, $areaid = '')
adds the given context to a list which is intended to be indexed
later by the scheduled task.
2017-10-11 17:17:07 +01:00
sam marshall d761b3fb19 MDL-55356 core_search: API to check if indexing enabled
New function \core_search\manager::is_indexing_enabled(), analagous
to existing is_global_search_enabled().

This replaces existing duplicated code, ready for more use in
following commits.
2017-10-11 17:17:06 +01:00
sam marshall 2d2fcc1c9e MDL-60357 core_search: Future modified times cause serious problems 2017-10-06 13:38:32 +01:00
sam marshall 2d94d4ea7c MDL-59913 Global search: Allow search of non-enrolled courses 2017-09-29 16:30:37 +01:00
sam marshall e36eefaeea MDL-59926 core_search: Allow Behat testing of results screens 2017-09-04 17:42:53 +01:00
David Monllao afabbd110e Merge branch 'MDL-59039-master' of https://github.com/sammarshallou/moodle 2017-07-11 21:49:03 +02:00
sam marshall 67d6479581 MDL-59039 Global search: Allow partial indexing (in scheduled task) 2017-07-11 16:41:33 +01:00
sam marshall a96faa49a8 MDL-58957 Global search: Add block support to search manager 2017-06-30 13:10:12 +01:00
Matt Porritt 0a9a10f029 MDL-58654 Global search: Allow engines to support batch processing.
Allow Global Search 3rd party engines to be much faster by supporting batch processing.
Refactor the iterator loop for the documents to add to the search index into its own method.
Move this new method from the manger class to the base engine class.
The move to the base engine class will allow search engine plugins to override this and determine
how they implment it. It will not break the existing interface contract with existing plugins.

Finally, add an elasped time indication to the trace output.
2017-05-31 08:28:12 +10:00
David Monllao b805d3f8ef MDL-56057 search: Fix incorrectly reported no enabled search areas
Also improved performance caching enabled search areas and
all search areas at the same time.
2016-10-12 08:30:23 +08:00
David Monllao e71061a22b MDL-55191 search: Generate an search result viewed event 2016-09-15 09:36:49 +08:00
David Monllao f3d38863fe MDL-55390 search: is_search_area unit tests
Added extra checking for search manager get_search_area.
2016-08-09 15:51:30 +08:00
Andrew Nicols 46c31069f3 MDL-55390 core_search: Correct variable name 2016-08-09 13:44:10 +08:00
Devang Gaur 396d6f0a6e MDL-55390 core_search: check if a search area is real 2016-08-05 01:12:21 +05:30