mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 18:57:19 +02:00
[PT Run] Split indexer plugin's queries into a fast and slow query (#5748)
* Added regex code * Added regex based method to remove all LIKE queries * Made regex readonly * Added plugin interface and code to execute slower plugins after the fast plugins * Added scoring for indexer and added statement to remove old indexer results * Refactored from master and added thread sleep for debugging * Removed lock from indexer plugin and added checks to avoid exceptions * Remove debug statement * Removed selected index update and fixed tests not building * Added tests * Removed scoring * Removed lock * Resolve merge conflicts * Moved dispatcher code to function and add parallel foreach loop * Removed DelayedExec metadata and modified QueryForPlugin to run only delayed exec plugins when bool param is true * Removed metadata from plugin.json
This commit is contained in:
@@ -20,7 +20,7 @@ using Wox.Plugin;
|
||||
|
||||
namespace Microsoft.Plugin.Indexer
|
||||
{
|
||||
internal class Main : ISettingProvider, IPlugin, ISavable, IPluginI18n, IContextMenu, IDisposable
|
||||
internal class Main : ISettingProvider, IPlugin, ISavable, IPluginI18n, IContextMenu, IDisposable, IDelayedExecutionPlugin
|
||||
{
|
||||
// This variable contains metadata about the Plugin
|
||||
private PluginInitContext _context;
|
||||
@@ -54,7 +54,7 @@ namespace Microsoft.Plugin.Indexer
|
||||
|
||||
// This function uses the Windows indexer and returns the list of results obtained
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "We want to keep the process alive but will log the exception")]
|
||||
public List<Result> Query(Query query)
|
||||
public List<Result> Query(Query query, bool isFullQuery)
|
||||
{
|
||||
var results = new List<Result>();
|
||||
|
||||
@@ -95,7 +95,14 @@ namespace Microsoft.Plugin.Indexer
|
||||
});
|
||||
}
|
||||
|
||||
var searchResultsList = _api.Search(searchQuery, maxCount: _settings.MaxSearchCount).ToList();
|
||||
var searchResultsList = _api.Search(searchQuery, isFullQuery, maxCount: _settings.MaxSearchCount).ToList();
|
||||
|
||||
// If the delayed execution query is not required (since the SQL query is fast) return empty results
|
||||
if (searchResultsList.Count == 0 && isFullQuery)
|
||||
{
|
||||
return new List<Result>();
|
||||
}
|
||||
|
||||
foreach (var searchResult in searchResultsList)
|
||||
{
|
||||
var path = searchResult.Path;
|
||||
@@ -161,6 +168,12 @@ namespace Microsoft.Plugin.Indexer
|
||||
return results;
|
||||
}
|
||||
|
||||
// This function uses the Windows indexer and returns the list of results obtained. This version is required to implement the interface
|
||||
public List<Result> Query(Query query)
|
||||
{
|
||||
return Query(query, false);
|
||||
}
|
||||
|
||||
public void Init(PluginInitContext context)
|
||||
{
|
||||
// initialize the context of the plugin
|
||||
|
||||
Reference in New Issue
Block a user