Please could an expert clarify the following if possible as I've had a fruitless 3 days chasing my tail.
I've looked at the examples of using Examine.LuceneEngine to create a custom index of data contained in a separate XML file (non Umbraco CMS data)
The default Umbraco config is set to use UmbracoExamine.
a. Am I correct in the assumption that UmbracoExamine is solely for Umbraco CMS data b. I am unable to use a combination of UmbracoExamine && Examine.LuceneEngine c. If I switch to Examine.LuceneEngine the internal back office search will be permanently broken d. If I switch to Examine.LuceneEngine, is it possible to create new indexes so I can at least get a working front end search up and running that will return results to users that contains Umbraco and non-Umbraco data
I'd be so very grateful if someone could respond this.
b. You should be able to use both you just need to create in the config files separate indexer and searcher (not tried it myself but in theory you should be able to)
c. No as the internal index and searcher is separate in the configs so it should still work if you dont touch internal index and searcher
d. Take around on forum about combining pdf and content search results becuase there was a similar issue there, one suggestion was you could combine the two result sets however you would lose ordering i.e. all umbraco results would be ordered and your custom results would also be ordered but as a combined result set they would not be ordered.
It doesnt even get as far as looking at the dataService="ExamineDemos.CustomDataService, ExamineDemos" section.
The internal search does break.
There are absolutely no examples of regular and custom indexes running in an Umbraco instance.
Having just spent a week integrating BlogEngine.Net cos a client wanted more functionality and due to this having to implement new search functionality I'm gonna have to port the whole thing across to DNN as I cant wrap it together. I genuinely feel like crying like a baby right now, I've been staring at this for a week.
In my humble opinion I dont think this works properly and it would be of great help to get a definitive answer from slace or someone with advanced knowledge of this so I can at least put it down and forget it if it is not possible.
Hey Greyhound, I've been able to install Examine 1.0 RTM on an Umbraco 4.5.2 instance and am able to (at least) define one custom index and use the XSLT Extensions, without breaking the internal indexer. I've followed the instructions on this page: Examine v1.0 RTM and in this document: Release Notes.
<?xml version="1.0"?>
<!--
Umbraco examine is an extensible indexer and search engine.
This configuration file can be extended to create your own index sets.
Index/Search providers can be defined in the UmbracoSettings.config
More information and documentation can be found on CodePlex: http://umbracoexamine.codeplex.com
-->
<ExamineLuceneIndexSets>
<!-- The internal index set used by Umbraco back-office - DO NOT REMOVE -->
<IndexSet SetName="InternalIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/Internal/">
<IndexAttributeFields>
<add Name="id" />
<add Name="nodeName" />
<add Name="updateDate" />
<add Name="writerName" />
<add Name="path" />
<add Name="nodeTypeAlias" />
<add Name="parentID" />
</IndexAttributeFields>
<IndexUserFields />
<IncludeNodeTypes/>
<ExcludeNodeTypes />
</IndexSet>
<!-- The internal index set used by Umbraco back-office for indexing members - DO NOT REMOVE -->
<IndexSet SetName="InternalMemberIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/InternalMember/">
<IndexAttributeFields>
<add Name="id" />
<add Name="nodeName"/>
<add Name="updateDate" />
<add Name="writerName" />
<add Name="loginName" />
<add Name="email" />
<add Name="nodeTypeAlias" />
</IndexAttributeFields>
<IndexUserFields/>
<IncludeNodeTypes/>
<ExcludeNodeTypes />
</IndexSet>
<IndexSet SetName="SiteSearchIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/SiteSearch/">
<IndexAttributeFields>
<add Name="id" />
<add Name="nodeName"/>
</IndexAttributeFields>
<IndexUserFields>
<add Name="pageTitle"/>
<add Name="pageBody"/>
<add Name="pageSummary"/>
</IndexUserFields>
<IncludeNodeTypes>
<add Name="Page"/>
<add Name="NewsPost"/>
<add Name="NewsOverview"/>
</IncludeNodeTypes>
<ExcludeNodeTypes>
<!--<add Name="DateFolder"/>
<add Name="NewsOverview"/>-->
</ExcludeNodeTypes>
</IndexSet>
</ExamineLuceneIndexSets>
config/ExamineSettings.config
<?xml version="1.0"?>
<!--
Umbraco examine is an extensible indexer and search engine.
This configuration file can be extended to add your own search/index providers.
Index sets can be defined in the ExamineIndex.config if you're using the standard provider model.
More information and documentation can be found on CodePlex: http://umbracoexamine.codeplex.com
-->
<Examine>
<ExamineIndexProviders>
<providers>
<add name="InternalIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
runAsync="true"
supportUnpublished="true"
supportProtected="true"
interval="10"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>
<add name="InternalMemberIndexer" type="UmbracoExamine.UmbracoMemberIndexer, UmbracoExamine"
runAsync="true"
supportUnpublished="true"
supportProtected="true"
interval="10"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>
<add name="SiteSearchIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
runAsync="true"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>
</providers>
</ExamineIndexProviders>
<ExamineSearchProviders defaultProvider="SiteSearchSearcher">
<providers>
<add name="InternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>
<add name="InternalMemberSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" enableLeadingWildcards="true"/>
<add name="SiteSearchSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" enableLeadingWildcards="true"/>
</providers>
</ExamineSearchProviders>
</Examine>
Did you try to build the example code on Using Examine to index & search with ANY data source with the latest binaries from Examine 1.0 RTM? (I presume that is where your SimpleDataIndexer and ExamineDemo.CustomDataService come from). Does it work as a stand-alone indexer?
Did anyone succeed in implementing search with a custom data source as layed out in the example of farmcode.org without breaking the internal search already. I am having the same problem as greyhound.
System.TypeInitializationException: The type initializer for
'Examine.ExamineManager' threw an exception. --->
System.Configuration.ConfigurationErrorsException: Object reference not
set to an instance of an object.
(D:\DEV\config\ExamineSettings.config line
57) ---> System.NullReferenceException: Object reference not set to
an instance of an object.
at Examine.LuceneEngine.Providers.LuceneIndexer.Initialize(String
name, NameValueCollection config) in
D:\~CODEPLEXPROJECTS\UmbracoExamine\Examine.Lucene\Providers\LuceneIndexer.cs:line
85
at Examine.LuceneEngine.Providers.SimpleDataIndexer.Initialize(String
name, NameValueCollection config) in
D:\~CODEPLEXPROJECTS\UmbracoExamine\Examine.Lucene\Providers\SimpleDataIndexer.cs:line
66
at
System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings
providerSettings, Type providerType)
--- End of inner exception stack trace ---
at
System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings
providerSettings, Type providerType)
at
System.Web.Configuration.ProvidersHelper.InstantiateProviders(ProviderSettingsCollection
configProviders, ProviderCollection providers, Type providerType)
at Examine.ExamineManager.LoadProviders()
at Examine.ExamineManager..ctor()
at Examine.ExamineManager..cctor()
--- End of inner exception stack trace ---
at Examine.ExamineManager.get_Instance()
at Usercontrols.CMS.Tree.ReindexSearchIndex.btnRebuildIndex_OnClick(Object
sender, EventArgs e) in
D:\DEV\usercontrols\CMS\Tree\ReindexSearchIndex.aspx.cs:line
172
No one has answered the question... do you put the provider information for the external datasource in ExamineSettings.config and ExamineIndex.config or should they be in a seperate file?
I too agree, that documention is extremely lacking. One blog post with one basic example does not make for good documentation.
I am having a simliar problem with umbraco version 4.7.1
When I upload the Examine.LuceneEngine.dll it crashes my xlst files. when I go into the save them I get the following error
System.Exception: Unable to load one or more of the types in assembly 'Examine.LuceneEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Exceptions were thrown: System.TypeLoadException: Method 'Range' in type 'Examine.LuceneEngine.SearchCriteria.LuceneQuery' from assembly 'Examine.LuceneEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation. System.TypeLoadException: Method 'Range' in type 'Examine.LuceneEngine.SearchCriteria.LuceneSearchCriteria' from assembly 'Examine.LuceneEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation. at umbraco.BusinessLogic.Utils.TypeFinder.FindClassesMarkedWithAttribute(Assembly assembly, Type attribute) at umbraco.BusinessLogic.Utils.TypeFinder.FindClassesMarkedWithAttribute(Type attribute) at umbraco.macro.GetXsltExtensionsImpl() at umbraco.cms.businesslogic.cache.Cache.GetCacheItem[TT](String cacheKey, Object syncLock, CacheItemPriority priority, CacheItemRemovedCallback refreshAction, CacheDependency cacheDependency, TimeSpan timeout, GetCacheItemDelegate`1 getCacheItem) at umbraco.macro.GetXsltExtensions() at umbraco.macro.AddMacroXsltExtensions() at umbraco.presentation.webservices.codeEditorSave.SaveXslt(String fileName, String oldName, String fileContents, Boolean ignoreDebugging)
Did anyone successfully get this working with umbraco 4.7.1?
UmbracoExamine & Examine.LuceneEngine
Please could an expert clarify the following if possible as I've had a fruitless 3 days chasing my tail.
I've looked at the examples of using Examine.LuceneEngine to create a custom index of data contained in a separate XML file (non Umbraco CMS data)
The default Umbraco config is set to use UmbracoExamine.
a. Am I correct in the assumption that UmbracoExamine is solely for Umbraco CMS data
b. I am unable to use a combination of UmbracoExamine && Examine.LuceneEngine
c. If I switch to Examine.LuceneEngine the internal back office search will be permanently broken
d. If I switch to Examine.LuceneEngine, is it possible to create new indexes so I can at least get a working front end search up and running that will return results to users that contains Umbraco and non-Umbraco data
I'd be so very grateful if someone could respond this.
GreyHound,
a. Yes you are
b. You should be able to use both you just need to create in the config files separate indexer and searcher (not tried it myself but in theory you should be able to)
c. No as the internal index and searcher is separate in the configs so it should still work if you dont touch internal index and searcher
d. Take around on forum about combining pdf and content search results becuase there was a similar issue there, one suggestion was you could combine the two result sets however you would lose ordering i.e. all umbraco results would be ordered and your custom results would also be ordered but as a combined result set they would not be ordered.
Regards
Ismail
Hi Ismail, thanks for getting back to me, this seems to be a very difficult area to get any kind of help on.
My experience is contrary to all of the above. Nothing seems to work at all expect a default UmbracoExamine Index.
Whenever I try to set up a custom index in the config then I get a value cannot be null (Parameter name : type) with the following highlighted:
type="Examine.LuceneEngine.Providers.SimpleDataIndexer, Examine"
It doesnt even get as far as looking at the dataService="ExamineDemos.CustomDataService, ExamineDemos" section.
The internal search does break.
There are absolutely no examples of regular and custom indexes running in an Umbraco instance.
Having just spent a week integrating BlogEngine.Net cos a client wanted more functionality and due to this having to implement new search functionality I'm gonna have to port the whole thing across to DNN as I cant wrap it together. I genuinely feel like crying like a baby right now, I've been staring at this for a week.
In my humble opinion I dont think this works properly and it would be of great help to get a definitive answer from slace or someone with advanced knowledge of this so I can at least put it down and forget it if it is not possible.
Hey Greyhound, I've been able to install Examine 1.0 RTM on an Umbraco 4.5.2 instance and am able to (at least) define one custom index and use the XSLT Extensions, without breaking the internal indexer. I've followed the instructions on this page: Examine v1.0 RTM and in this document: Release Notes.
Here are my config files:
config/xsltExtensions.config
config/ExamineIndex.config
config/ExamineSettings.config
web.config (first lines):
And I just realized my entire last post was BS as you're referring to reading an external XML file. My sincerest apologies.
lol - the whole incident has made me feel like crying into my coffee but at least your previous message made me laugh.
Thanks for taking the time to have a look.
Did you try to build the example code on Using Examine to index & search with ANY data source with the latest binaries from Examine 1.0 RTM? (I presume that is where your SimpleDataIndexer and ExamineDemo.CustomDataService come from). Does it work as a stand-alone indexer?
Did anyone succeed in implementing search with a custom data source as layed out in the example of farmcode.org without breaking the internal search already. I am having the same problem as greyhound.
I would like to know this too as I've tried a number of things but cant get anything to work correctly.
Thanks
Tom
Are you using the latest version from codeplex?
Regards
Ismail
I can confirm that after downloading the latest version from codeplex has sorted my issue and now indexing my custom data
Regards
Tom
I still get error with this custom data indexing.
It seems that IndexSets.Instatence is Null
Anyone can help?
Thanks
System.TypeInitializationException: The type initializer for 'Examine.ExamineManager' threw an exception. ---> System.Configuration.ConfigurationErrorsException: Object reference not set to an instance of an object. (D:\DEV\config\ExamineSettings.config line 57) ---> System.NullReferenceException: Object reference not set to an instance of an object. at Examine.LuceneEngine.Providers.LuceneIndexer.Initialize(String name, NameValueCollection config) in D:\~CODEPLEXPROJECTS\UmbracoExamine\Examine.Lucene\Providers\LuceneIndexer.cs:line 85 at Examine.LuceneEngine.Providers.SimpleDataIndexer.Initialize(String name, NameValueCollection config) in D:\~CODEPLEXPROJECTS\UmbracoExamine\Examine.Lucene\Providers\SimpleDataIndexer.cs:line 66 at System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings, Type providerType) --- End of inner exception stack trace --- at System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings, Type providerType) at System.Web.Configuration.ProvidersHelper.InstantiateProviders(ProviderSettingsCollection configProviders, ProviderCollection providers, Type providerType) at Examine.ExamineManager.LoadProviders() at Examine.ExamineManager..ctor() at Examine.ExamineManager..cctor() --- End of inner exception stack trace --- at Examine.ExamineManager.get_Instance() at Usercontrols.CMS.Tree.ReindexSearchIndex.btnRebuildIndex_OnClick(Object sender, EventArgs e) in D:\DEV\usercontrols\CMS\Tree\ReindexSearchIndex.aspx.cs:line 172
No one has answered the question... do you put the provider information for the external datasource in ExamineSettings.config and ExamineIndex.config or should they be in a seperate file?
I too agree, that documention is extremely lacking. One blog post with one basic example does not make for good documentation.
I am having a simliar problem with umbraco version 4.7.1
When I upload the Examine.LuceneEngine.dll it crashes my xlst files. when I go into the save them I get the following error
System.Exception: Unable to load one or more of the types in assembly 'Examine.LuceneEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Exceptions were thrown:
System.TypeLoadException: Method 'Range' in type 'Examine.LuceneEngine.SearchCriteria.LuceneQuery' from assembly 'Examine.LuceneEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
System.TypeLoadException: Method 'Range' in type 'Examine.LuceneEngine.SearchCriteria.LuceneSearchCriteria' from assembly 'Examine.LuceneEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
at umbraco.BusinessLogic.Utils.TypeFinder.FindClassesMarkedWithAttribute(Assembly assembly, Type attribute)
at umbraco.BusinessLogic.Utils.TypeFinder.FindClassesMarkedWithAttribute(Type attribute)
at umbraco.macro.GetXsltExtensionsImpl()
at umbraco.cms.businesslogic.cache.Cache.GetCacheItem[TT](String cacheKey, Object syncLock, CacheItemPriority priority, CacheItemRemovedCallback refreshAction, CacheDependency cacheDependency, TimeSpan timeout, GetCacheItemDelegate`1 getCacheItem)
at umbraco.macro.GetXsltExtensions()
at umbraco.macro.AddMacroXsltExtensions()
at umbraco.presentation.webservices.codeEditorSave.SaveXslt(String fileName, String oldName, String fileContents, Boolean ignoreDebugging)
Did anyone successfully get this working with umbraco 4.7.1?
Thanks
James
is working on a reply...