lucenenet-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nightowl...@apache.org
Subject [47/50] [abbrv] lucenenet git commit: Added minimalistic info on how to use the replicator
Date Sat, 09 Sep 2017 00:32:05 GMT
Added minimalistic info on how to use the replicator


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/330c0667
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/330c0667
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/330c0667

Branch: refs/heads/master
Commit: 330c0667e81766e5edbfe09c17a8c39749ce7dae
Parents: cce39cc
Author: Jens Melgaard <admin@it-links.dk>
Authored: Mon Sep 4 12:59:54 2017 +0200
Committer: Shad Storhaug <shad@shadstorhaug.com>
Committed: Sat Sep 9 06:57:17 2017 +0700

----------------------------------------------------------------------
 src/Lucene.Net.Replicator/Http/replicator.md | 53 ++++++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/330c0667/src/Lucene.Net.Replicator/Http/replicator.md
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Replicator/Http/replicator.md b/src/Lucene.Net.Replicator/Http/replicator.md
index 3e055cf..0de6006 100644
--- a/src/Lucene.Net.Replicator/Http/replicator.md
+++ b/src/Lucene.Net.Replicator/Http/replicator.md
@@ -108,4 +108,55 @@ public static class AspNetCoreReplicationServiceExtentions
 
 Now the implementation can be used wihin AspNetCore in order to service Lucene Replicator
requests over http.
 
-TODO: Finish.
\ No newline at end of file
+In order to enable replication of indexes, the IndewWriter that writes the index should be
created with a `SnapshotDeletionPolicy`.
+
+```csharp
+IndexWriterConfig config = new IndexWriterConfig(...ver..., new StandardAnalyzer(...ver...));
+config.IndexDeletionPolicy = new SnapshotDeletionPolicy(config.IndexDeletionPolicy);
+IndexWriter writer = new IndexWriter(FSDirectory.Open("..."), config);
+```
+
+For the absolute minimal solution we can wire the ReplicatorService up on the server side
as:
+
+```csharp
+LocalReplicator replicator = new LocalReplicator(); 
+ReplicatorService service = new ReplicationService(new Dictionary<string, IReplicator>{
+    ["shard_name"] = replicator
+}, "/api/replicate");
+
+app.Map("/api/replicate", builder => {
+    builder.Run(async context => {
+        await Task.Yield();
+        service.Perform(context.Request, context.Response); 
+    });
+});
+```
+
+Now in order to publish a Revision call the publish method in the LocalReplicator:
+
+```csharp
+IndexWriter writer = ...;
+LocalReplicator replicator = ...;
+replicator.Publish(new IndexRevision(writer));
+```
+
+On the client side create a new HttpReplicator and start replicating, e.g.:
+
+```csharp
+IReplicator replicator = new HttpReplicator("http://{host}:{port}/api/replicate/shard_name");
+ReplicationClient client = new ReplicationClient(
+    replicator, 
+    new IndexReplicationHandler(
+        FSDirectory.Open(...directory...), 
+        () => ...onUpdate...), 
+        new PerSessionDirectoryFactory(...temp-working-directory...));
+
+//Now either start the Update Thread or do manual pulls periodically.
+client.UpdateNow(); //Manual Pull
+client.StartUpdateThread(1000, "Replicator Thread"); //Pull automatically every second if
there is any changes.
+```
+
+From here it would be natural to use a SearchManager over the directory in order to get Searchers
updated outomatically.
+But this cannot be created before the first actual replication as the SearchManager will
fail because there is no index.
+
+We can use the onUpdate handler to perform the first initialization in this case.
\ No newline at end of file


Mime
View raw message