I have a site built on Umbraco v6.1.6. We have implemented a custom Examine index by writing our own data service (based on Examine.LuceneEngine.ISimpleDataService).
This is all working fine, except for the fact that in our load balanced environment, Distributed Calls don't appear to be propagating index changes triggered on one server to the other.
From the research I've done, I believe more work was done in v6.2.? on Distributed Calls, but would these changes cover my scenario?
If it's not as simple as upgrading our installation of Umbraco to get this going, can anyone give me any pointers as to what I will need to do to get the indexes synchronising?
Thanks for the response - yes - as far as I can tell the Distributed Calls are doing what they need to do in terms of updating the content on the site.
I can confirm that the ExternalIndexer works fine.
As far as I can see, the ISimpleDataService only has one member - GetAllData - which we've implemented.
The service does essentially work as I can manually force a re-index by clicking the button on the 'Examine' tab within the Umbraco back end on each web server and it updates without a problem.
That said, thinking about it, there is no method in the data service which can be called to re-index a single document, so I don't know what the DistributedCalls infrastructure could call - other than perform a complete re-index?!
Any pointers of where to go next would be appreciated!
OK - So, looking at it, the Examine.LuceneEngine.Providers.SimpleDataIndexer doesn't support any form of update via the Umbraco distributed calls mechanism.
I guess as it's part of Examine, and not part of Umbraco, that would make some kind of sense.
The problem is - I'm not quite sure where to go from here... Do I need to implement a completely new Indexer (perhaps 'borrowing' some of the code from the UmbracoContentIndexer), or stick with the SimpleDataIndexer and work out a separate mechanism to update the other web server?!
I think I've achieved what I need by implementing a class based on ICacheRefresher. When I've proved that it does the job, I'll put the details in a blog post and link to it from here in case it helps anyone else...
Distributed Calls for Custom Examine Index
Hello,
I have a site built on Umbraco v6.1.6. We have implemented a custom Examine index by writing our own data service (based on Examine.LuceneEngine.ISimpleDataService).
This is all working fine, except for the fact that in our load balanced environment, Distributed Calls don't appear to be propagating index changes triggered on one server to the other.
From the research I've done, I believe more work was done in v6.2.? on Distributed Calls, but would these changes cover my scenario?
If it's not as simple as upgrading our installation of Umbraco to get this going, can anyone give me any pointers as to what I will need to do to get the indexes synchronising?
Thanks,
- Chris
Hi Chris,
Do the out of box indexes get updated when you publish content ?
Dave
Hi Dave,
Thanks for the response - yes - as far as I can tell the Distributed Calls are doing what they need to do in terms of updating the content on the site.
Thanks,
- Chris
But are they also updating the default indexes like InternalIndex and ExternalIndex ?
If that's the case I suspect it's your service that's the culprit.
Dave
Hi Dave,
I can confirm that the ExternalIndexer works fine.
As far as I can see, the ISimpleDataService only has one member - GetAllData - which we've implemented.
The service does essentially work as I can manually force a re-index by clicking the button on the 'Examine' tab within the Umbraco back end on each web server and it updates without a problem.
That said, thinking about it, there is no method in the data service which can be called to re-index a single document, so I don't know what the DistributedCalls infrastructure could call - other than perform a complete re-index?!
Any pointers of where to go next would be appreciated!
Thanks,
- Chris
Do you index Umbraco content or external content.
If it's umbraco content you could fire a event on publish of a node to index your content
It's external content, unfortunately!
OK - So, looking at it, the Examine.LuceneEngine.Providers.SimpleDataIndexer doesn't support any form of update via the Umbraco distributed calls mechanism.
I guess as it's part of Examine, and not part of Umbraco, that would make some kind of sense.
The problem is - I'm not quite sure where to go from here... Do I need to implement a completely new Indexer (perhaps 'borrowing' some of the code from the UmbracoContentIndexer), or stick with the SimpleDataIndexer and work out a separate mechanism to update the other web server?!
Any thoughts / pointers would be appreciated!
Thanks,
- Chris
Hi Chris,
Maybe you can ping Shannon Deminick (@Shazwazza) on twitter. He is the developer of Examine.
Dave
Thanks Dave,
I think I've achieved what I need by implementing a class based on ICacheRefresher. When I've proved that it does the job, I'll put the details in a blog post and link to it from here in case it helps anyone else...
- Chris
Cool... looking forward to it. Had this on my todo list to have a look at. Maybe you can already post the code ?
Hi Chris,
Did you get the ICacheRefresher to work. Can you post some details ?
Dave
is working on a reply...