]> git.mxchange.org Git - friendica.git/commitdiff
Include more field in the fulltext search
authorMichael <heluecht@pirati.ca>
Sat, 19 Sep 2020 10:45:11 +0000 (10:45 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 19 Sep 2020 10:45:11 +0000 (10:45 +0000)
src/Model/ItemContent.php
src/Module/Search/Index.php
static/dbstructure.config.php

index c4e77cf413794ec2d53c843f16f7d63918264cbd..daa2766e2f16a594c85b0878604f1f0a170f0d47 100644 (file)
@@ -31,7 +31,7 @@ class ItemContent
 {
        public static function getURIIdListBySearch(string $search, int $uid = 0, int $start = 0, int $limit = 100)
        {
-               $condition = ["`uri-id` IN (SELECT `uri-id` FROM `item-content` WHERE MATCH (`body`) AGAINST (? IN BOOLEAN MODE))
+               $condition = ["`uri-id` IN (SELECT `uri-id` FROM `item-content` WHERE MATCH (`title`, `content-warning`, `body`) AGAINST (? IN BOOLEAN MODE))
                        AND (NOT `private` OR (`private` AND `uid` = ?))", $search, $uid];
                $params = [
                        'order' => ['uri-id' => true],
@@ -50,6 +50,13 @@ class ItemContent
                return $uriids;
        }
 
+       public static function countBySearch(string $search, int $uid = 0)
+       {
+               $condition = ["`uri-id` IN (SELECT `uri-id` FROM `item-content` WHERE MATCH (`title`, `content-warning`, `body`) AGAINST (? IN BOOLEAN MODE))
+                       AND (NOT `private` OR (`private` AND `uid` = ?))", $search, $uid];
+               return DBA::count('item', $condition);
+       }
+
        /**
         * Convert a message into plaintext for connectors to other networks
         *
index 030b684e6b62de8bdb7629a6da54f1043e8b727f..42d1d50c7ba2ba4dcfd3df41f7318de654155429 100644 (file)
@@ -152,16 +152,17 @@ class Index extends BaseSearch
                if ($tag) {
                        Logger::info('Start tag search.', ['q' => $search]);
                        $uriids = Tag::getURIIdListByTag($search, local_user(), $pager->getStart(), $pager->getItemsPerPage());
+                       $count = Tag::countByTag($search, local_user());
                } else {
                        Logger::info('Start fulltext search.', ['q' => $search]);
                        $uriids = ItemContent::getURIIdListBySearch($search, local_user(), $pager->getStart(), $pager->getItemsPerPage());
+                       $count = ItemContent::countBySearch($search, local_user());
                }
 
                if (!empty($uriids)) {
                        $params = ['order' => ['id' => true], 'group_by' => ['uri-id']];
                        $items = Item::selectForUser(local_user(), [], ['uri-id' => $uriids], $params);
                        $r = Item::inArray($items);
-                       $count = Tag::countByTag($search, local_user());
                } else {
                        $count = 0;
                }
index c69da5a0ef2adc5a79150a71710a94254aacb4fa..ea506b4a92c193b90365d24f75f8a7afb27f2fdb 100755 (executable)
@@ -857,7 +857,7 @@ return [
                "indexes" => [
                        "PRIMARY" => ["id"],
                        "uri-plink-hash" => ["UNIQUE", "uri-plink-hash"],
-                       "body" => ["FULLTEXT", "body"],
+                       "title-content-warning-body" => ["FULLTEXT", "title", "content-warning", "body"],
                        "uri" => ["uri(191)"],
                        "plink" => ["plink(191)"],
                        "uri-id" => ["uri-id"]