Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Are these Epi Commerce products? They will be indexed automatically and you shouldn't specify any ID fields. Epi has already picked a Find identity string.
Ahh, that's probably the issue. It looks like what Epi chooses involves a Guid i.e. CatalogContent_93c105e2-8ed7-413f-b188-450cf3ad9f14_en-US
My issue is I have an external process that does different batch updates of product data. One of the potential update is images. I wanted to be able to just update a single field on the find item. Something like this:
SearchClient.Instance.Update<MyProduct>(id).Field(x => x.ProductImages(), images);
The issue is I don't know the ID, though I would be getting the product code and barcode property in this instance.
Instead what I will have to do is
The Id should be constructed in term of CatalogContent_ContentGuid_Language
So if you have the content, you can construct the id from that
Ahh I get it so it's using the ContentGuid property from CatalogContentBase.
Thanks @Quan Mai
I am indexing products and categories in Find and using an initialisation module to set the client conventions - see below.
[InitializableModule] [ModuleDependency(typeof(EPiServer.Web.InitializationModule))] public class SearchIndexInitialization : IInitializableModule { public void Initialize(InitializationEngine context) { ContentIndexer.Instance.Conventions.ForInstancesOf().ShouldIndex(x => false);
SearchClient.Instance.Conventions.ForInstancesOf()
.IdIs(x => x.Barcode)
.IncludeField(x => x.InStock())
.IncludeField(x => x.DisplayPrice());
SearchClient.Instance.Conventions.ForInstancesOf()
.IdIs(x => x.Barcode);
SearchClient.Instance.Conventions.ForInstancesOf()
.IdIs(x => x.Barcode);
SearchClient.Instance.Conventions.ForInstancesOf()
.IdIs(x => x.Barcode);
SearchClient.Instance.Conventions.ForInstancesOf()
.IdIs(x => x.Code);
}
However, the ID field of Barcode and Code for Nodes does not seem to be used. When I run any queries the ID still looks something like this: "CatalogContent_93c105e2-8ed7-413f-b188-450cf3ad9f14_en-US"
Note that BaseProduct is the inherited type of other products and included fields do work. I added the other derived types explicitly just in case it was an inheritance issue but that seems to have no effect.
Is the standard behaviour, a bug or I missing something?