From cc99ce2e90c45eff8745dc1b75e01ae87664353f Mon Sep 17 00:00:00 2001
From: JoinTyang <41655440+JoinTyang@users.noreply.github.com>
Date: Wed, 2 Apr 2025 11:47:06 +0800
Subject: [PATCH] seasearch support fulltext search (#7696)

---
 scripts/pro.py         | 8 ++++----
 seahub/api2/views.py   | 6 +++++-
 seahub/search/utils.py | 6 +++++-
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/scripts/pro.py b/scripts/pro.py
index 8f400b1f42..2bc623b3da 100755
--- a/scripts/pro.py
+++ b/scripts/pro.py
@@ -716,12 +716,12 @@ def update_seasearch_index():
 def update_file_seasearch_index():
     argv = [
         Utils.get_python_executable(),
-        '-m', 'seafevents.seasearch.script.repo_filename_index_local',
+        '-m', 'seafevents.seasearch.script.repo_file_index_local',
         '--loglevel', 'debug',
         'update',
     ]
 
-    Utils.info('\nUpdating seasearch filename index, this may take a while...\n')
+    Utils.info('\nUpdating seasearch file index, this may take a while...\n')
 
     Utils.run_argv(argv, env=get_seafes_env())
 
@@ -755,12 +755,12 @@ def delete_seasearch_index():
 def delete_file_seasearch_index():
     argv = [
         Utils.get_python_executable(),
-        '-m', 'seafevents.seasearch.script.repo_filename_index_local',
+        '-m', 'seafevents.seasearch.script.repo_file_index_local',
         '--loglevel', 'debug',
         'clear',
     ]
 
-    Utils.info('\nDelete seasearch filename index, this may take a while...\n')
+    Utils.info('\nDelete seasearch file index, this may take a while...\n')
 
     Utils.run_argv(argv, env=get_seafes_env())
 
diff --git a/seahub/api2/views.py b/seahub/api2/views.py
index 3ea439dccd..8263ffabbc 100644
--- a/seahub/api2/views.py
+++ b/seahub/api2/views.py
@@ -666,7 +666,11 @@ class Search(APIView):
                 repos = [(repo.id, repo.origin_repo_id, repo.origin_path, repo.name)]
 
             searched_repos, repos_map = format_repos(repos)
-            results, total = ai_search_files(keyword, searched_repos, per_page, suffixes, search_path=search_path, obj_type=obj_type)
+
+            size_range = [size_from, size_to]
+            time_range = [time_from, time_to]
+            results, total = ai_search_files(keyword, searched_repos, per_page, suffixes,
+                                             search_path=search_path, obj_type=obj_type, time_range=time_range, size_range=size_range)
 
             for f in results:
                 repo_id = f['repo_id']
diff --git a/seahub/search/utils.py b/seahub/search/utils.py
index 65c973d7be..a5baea7163 100644
--- a/seahub/search/utils.py
+++ b/seahub/search/utils.py
@@ -210,7 +210,7 @@ def search_wikis(wiki_id, keyword, count):
     return es_wiki_search(wiki_id, keyword, count)
 
 
-def ai_search_files(keyword, searched_repos, count, suffixes, search_path=None, obj_type=None):
+def ai_search_files(keyword, searched_repos, count, suffixes, search_path=None, obj_type=None, time_range=None, size_range=None):
     params = {
         'query': keyword,
         'repos': searched_repos,
@@ -222,6 +222,10 @@ def ai_search_files(keyword, searched_repos, count, suffixes, search_path=None,
         params['search_path'] = search_path
     if obj_type:
         params['obj_type'] = obj_type
+    if time_range:
+        params['time_range'] = time_range
+    if size_range:
+        params['size_range'] = size_range
 
     resp = search(params)
     if resp.status_code == 500: