aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2021-03-10 18:46:18 +0100
committerRobin Appelman <robin@icewind.nl>2021-03-11 14:49:57 +0100
commit424db15deaef20856e29ba1c886f06864a393eea (patch)
tree26b9df80afe012ea2e8ecde06302b2346f73a78c
parent95cddb84e2d07f105d7120a4f7b37c65419c0943 (diff)
downloadnextcloud-server-424db15deaef20856e29ba1c886f06864a393eea.tar.gz
nextcloud-server-424db15deaef20856e29ba1c886f06864a393eea.zip
limit constructing of result objects in file search
even thought we currently have no proper way of limiting the search itself, we can at least limit the construction of the result objects. this saves about 40% of the time spend in the search request in my local testing Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r--apps/files/lib/Search/FilesSearchProvider.php5
-rw-r--r--lib/private/Search/Provider/File.php11
2 files changed, 13 insertions, 3 deletions
diff --git a/apps/files/lib/Search/FilesSearchProvider.php b/apps/files/lib/Search/FilesSearchProvider.php
index 93600119357..1c4bc75ade7 100644
--- a/apps/files/lib/Search/FilesSearchProvider.php
+++ b/apps/files/lib/Search/FilesSearchProvider.php
@@ -103,7 +103,7 @@ class FilesSearchProvider implements IProvider {
// Make sure we setup the users filesystem
$this->rootFolder->getUserFolder($user->getUID());
- return SearchResult::complete(
+ return SearchResult::paginated(
$this->l10n->t('Files'),
array_map(function (FileResult $result) {
// Generate thumbnail url
@@ -121,7 +121,8 @@ class FilesSearchProvider implements IProvider {
$searchResultEntry->addAttribute('fileId', (string)$result->id);
$searchResultEntry->addAttribute('path', $result->path);
return $searchResultEntry;
- }, $this->fileSearch->search($query->getTerm()))
+ }, $this->fileSearch->search($query->getTerm(), $query->getLimit(), (int)$query->getCursor())),
+ $query->getCursor() + $query->getLimit()
);
}
diff --git a/lib/private/Search/Provider/File.php b/lib/private/Search/Provider/File.php
index b4e35d374ca..688b6ad1e91 100644
--- a/lib/private/Search/Provider/File.php
+++ b/lib/private/Search/Provider/File.php
@@ -39,14 +39,23 @@ class File extends \OCP\Search\Provider {
/**
* Search for files and folders matching the given query
+ *
* @param string $query
+ * @param int|null $limit
+ * @param int|null $offset
* @return \OCP\Search\Result[]
* @deprecated 20.0.0
*/
- public function search($query) {
+ public function search($query, int $limit = null, int $offset = null) {
+ if ($offset === null) {
+ $offset = 0;
+ }
\OC_Util::setupFS();
$files = Filesystem::search($query);
$results = [];
+ if ($limit !== null) {
+ $files = array_slice($files, $offset, $offset + $limit);
+ }
// edit results
foreach ($files as $fileData) {
// skip versions