AI OnAI Off
Ok, found the problem.
The Lucene Provider has a setting called storage, which is often combined with basePath. Here is what I got working:
Mediachase.Search.config manger site:
Mediachase.Search> <SearchProviders defaultProvider="LuceneSearchProvider"> <providers> <add name="LuceneSearchProvider" type="Mediachase.Search.Providers.Lucene.LuceneSearchProvider, Mediachase.Search.LuceneSearchProvider" queryBuilderType="Mediachase.Search.Providers.Lucene.LuceneSearchQueryBuilder, Mediachase.Search.LuceneSearchProvider" storage="[appDataPath]\Search" simulateFaceting="true" /> <add name="LuceneAzureSearchProvider" type="Mediachase.Search.Providers.Lucene.LuceneAzureSearchProvider, Mediachase.Search.LuceneAzureSearchProvider" queryBuilderType="Mediachase.Search.Providers.Lucene.LuceneSearchQueryBuilder, Mediachase.Search.LuceneSearchProvider" storage="indexcontainer" connectionStringName="EPiServerAzureBlobs" simulateFaceting="true"/> </providers> </SearchProviders> <Indexers basePath="..\appdata"> <add name="catalog" type="Mediachase.Search.Extensions.Indexers.CatalogIndexBuilder, Mediachase.Search.Extensions" /> </Indexers> </Mediachase.Search>
Mediachase.Search.config web site:
<Mediachase.Search> <SearchProviders defaultProvider="LuceneSearchProvider"> <providers> <add name="LuceneSearchProvider" type="Mediachase.Search.Providers.Lucene.LuceneSearchProvider, Mediachase.Search.LuceneSearchProvider" queryBuilderType="Mediachase.Search.Providers.Lucene.LuceneSearchQueryBuilder, Mediachase.Search.LuceneSearchProvider" storage="C:\Projects\MyProject\src\MyProject.Manager\App_Data\Search" simulateFaceting="true" /> <add name="LuceneAzureSearchProvider" type="Mediachase.Search.Providers.Lucene.LuceneAzureSearchProvider, Mediachase.Search.LuceneAzureSearchProvider" queryBuilderType="Mediachase.Search.Providers.Lucene.LuceneSearchQueryBuilder, Mediachase.Search.LuceneSearchProvider" storage="indexcontainer" connectionStringName="EPiServerAzureBlobs" simulateFaceting="true"/> </providers> </SearchProviders> <Indexers basePath="..\appdata"> <add name="catalog" type="Mediachase.Search.Extensions.Indexers.CatalogIndexBuilder, Mediachase.Search.Extensions" /> </Indexers> </Mediachase.Search>
So If the index is inside app data folder on manager site, the web site config need to refer to the full path. In Azure this will not be an issue as indexed is stored as a blob.
I have setup catalog search with the LuceneSearchProvider:
I have built the index through commerce manager, which only generates one file: catalog.build
When I try to search I get 0 hits. In the log file I find the following error:
ERROR EPiServer.Commerce.Shell.Search.ProductSearchProviderBase: Error when processing search product catalog query
System.IO.FileNotFoundException: no segments* file found in Lucene.Net.Store.SimpleFSDirectory@ lockFactory=Lucene.Net.Store.NativeFSLockFactory: files:catalog.build
at Lucene.Net.Index.SegmentInfos.FindSegmentsFile.Run(IndexCommit commit) in d:\Lucene.Net\FullRepo\trunk\src\core\Index\SegmentInfos.cs:line 736
I found an old post from 2012 regarding the topic:
https://world.episerver.com/Modules/Forum/Pages/Thread.aspx?id=56915
I am running Episerver.Commerce 11.2.4