public string[] Search(int tenantId, string query, string module) { log.DebugFormat("Search({0}, {1}, {2})", tenantId, 50 < (query ?? string.Empty).Length ? query.Substring(0, 50) + "..." : query, module); try { if (string.IsNullOrEmpty(module)) { throw new ArgumentNullException("module"); } if (string.IsNullOrEmpty(query)) { return(new string[0]); } if (TextIndexCfg.MaxQueryLength < query.Length) { query = query.Substring(0, TextIndexCfg.MaxQueryLength); } var tenant = tenantsProvider.GetTenant(tenantId); var path = configuration.GetIndexPath(tenantId, module); if (tenant == null || !Directory.Exists(path)) { return(new string[0]); } var searcher = new TextSearcher(module, path); return(searcher.Search(query, tenant)); } catch (Lucene.Net.QueryParsers.ParseException ex) { log.ErrorFormat("Search error: query = {0}, tenantId = {1}, module = {2} - {3}", query, tenantId, module, ex); throw new ArgumentException(ex.Message); } }
public TextSearchResult Search(int tenantId, string query, string module) { try { if (string.IsNullOrEmpty(module)) { throw new ArgumentNullException("module"); } var result = new TextSearchResult(module); if (string.IsNullOrEmpty(query)) { return(result); } if (TextIndexCfg.MaxQueryLength < query.Length) { query = query.Substring(0, TextIndexCfg.MaxQueryLength); } var tenant = CoreContext.TenantManager.GetTenant(tenantId); var path = configuration.GetIndexPath(tenantId, module); if (tenant == null || !Directory.Exists(path)) { return(result); } var searcher = new TextSearcher(module, path); return(searcher.Search(query, tenant)); } catch (Lucene.Net.QueryParsers.ParseException ex) { throw new ArgumentException(ex.Message); } }
private void DoIndex(TextIndexAction action) { if (action == TextIndexAction.None) { return; } foreach (var t in tenantsProvider.GetTenants()) { foreach (var m in configuration.Modules) { if (stop.WaitOne(TimeSpan.Zero)) { return; } var indexPath = configuration.GetIndexPath(t.TenantId, m.Name); var indexer = new TextIndexer(indexPath, t, m); try { Thread.Sleep(configuration.Delay); if (TextIndexAction.Index == (action & TextIndexAction.Index)) { var affected = indexer.FindChangedAndIndex(); log.DebugFormat("Indexed {0} objects at tenant {1} in module {2}", affected, t, m); } } catch (Exception ex) { log.ErrorFormat("Error FindChangedAndIndex in tenant {0}: {1}", t, ex); } try { Thread.Sleep(configuration.Delay); if (TextIndexAction.Remove == (action & TextIndexAction.Remove)) { var affected = indexer.FindRemovedAndIndex(); log.DebugFormat("Removed {0} objects at tenant {1} in module {2}", affected, t, m); } } catch (Exception ex) { log.ErrorFormat("Error FindRemovedAndIndex in tenant {0}: {1}", t, ex); } } } }