public override ResponseMessage Execute(RequestMessage raw_request) { RemoteIndexerRequest remote_request = (RemoteIndexerRequest)raw_request; IndexHelperTool.ReportActivity(); // Find the appropriate driver for this request. LuceneIndexingDriver indexer; lock (indexer_table) { indexer = (LuceneIndexingDriver)indexer_table [remote_request.RemoteIndexName]; if (indexer == null) { indexer = new LuceneIndexingDriver(remote_request.RemoteIndexName, remote_request.RemoteIndexMinorVersion); indexer.DisableTextCache = IndexHelperTool.DisableTextCache; indexer_table [remote_request.RemoteIndexName] = indexer; indexer.FileFilterNotifier += delegate(Uri display_uri, Uri content_uri, Filter filter) { IndexHelperTool.ReportActivity(); IndexHelperTool.CurrentDisplayUri = display_uri; IndexHelperTool.CurrentContentUri = content_uri; IndexHelperTool.CurrentFilter = filter; }; } } IndexerReceipt [] receipts = null; int item_count = 0; try { if (remote_request.Request != null) // If we just want the item count, this will be null { receipts = indexer.Flush(remote_request.Request); } item_count = indexer.GetItemCount(); } catch (Exception e) { // Send error response ++Count; return(new ErrorResponse(e)); } // Construct a response containing the item count and // the receipts produced by the actual indexing. RemoteIndexerResponse response = new RemoteIndexerResponse(); response.ItemCount = item_count; response.Receipts = receipts; ++Count; IndexHelperTool.ReportActivity(); return(response); }
static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("Usage: beagle-master-delete-button index-name uri-to-delete"); return; } string index_name = args [0]; LuceneQueryingDriver driver = new LuceneQueryingDriver(index_name, -1, true); Uri uri = new Uri(args [1], false); Uri uri_to_delete = RemapUri(driver, uri); LuceneIndexingDriver indexer = new LuceneIndexingDriver(index_name, false); Indexable indexable = new Indexable(uri_to_delete); indexable.Type = IndexableType.Remove; IndexerRequest request = new IndexerRequest(); request.Add(indexable); IndexerReceipt [] receipts = indexer.Flush(request); if (receipts == null || receipts.Length == 0) { Console.WriteLine("Uri {0} not found in {1}", uri, index_name); return; } IndexerRemovedReceipt r = receipts [0] as IndexerRemovedReceipt; if (r == null || r.NumRemoved == 0) { Console.WriteLine("Uri {0} not found in {1}", uri, index_name); return; } Console.WriteLine("Uri {0} deleted", uri); }