我正在开发一个asp.net项目,我在更改检测索引器方面遇到了一些问题。
我曾经有一个StandardAnalyzer作为索引器,但现在我需要使用ArabicAnalyzer作为索引器。 单独测试时,我所做的一切都在改变:
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>
使用:
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.AR, Lucene.Net"/>
它运作正常。 当我试图在我现有的项目中做同样的事情时,我在YSOD页面中得到了以下异常。
第31行:
描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并相应地修改配置文件。
分析程序错误消息:值不能为空。
我没有找到解决方案。 你有任何想法如何解决这个问题吗?
更新
<Examine>
<ExamineIndexProviders>
<providers>
<add name="InternalIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="true"
analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net"/>
<add name="InternalMemberIndexer" type="UmbracoExamine.UmbracoMemberIndexer, UmbracoExamine"
supportUnpublished="true"
supportProtected="true"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.AR, Lucene.Net"/>
</providers>
</ExamineIndexProviders>
<ExamineSearchProviders defaultProvider="ExternalSearcher">
<providers>
<add name="InternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net"/>
<add name="ExternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" />
<add name="InternalMemberSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
analyzer="Lucene.Net.Analysis.AR, Lucene.Net" enableLeadingWildcards="true"/>
<add name="EntitySearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
analyzer="Lucene.Net.Analysis.AR, Lucene.Net" enableLeadingWildcards="true"/>
</providers>
</ExamineSearchProviders>
</Examine>
答案 0 :(得分:1)
如果现有项目失败,您可能需要删除现有索引,然后重新启动应用程序。
索引全部存储在~/app_data/Temp/ExamineIndexes/
,因此您只需从 此文件夹中删除特定的索引文件夹,然后重新启动应用程序。这应该促使Umbraco开始重新索引内容。
此外,您还应该设置ExamineSearchProvider
,而不仅仅是ExamineIndexProvider
。这是在相同的配置文件中。这可确保使用相同的Analyzer
类型来搜索结果,以便对其进行索引。
修改强>
查看配置,您在Analyzer=""
ExternalSearcher
进一步修改
值Lucene.Net.Analysis.AR
不是有效的分析器值,它只是分析器的命名空间。我没有按照我的假设进行检查,但在两种情况下,值都应该是:
analyzer="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net"
答案 1 :(得分:0)
我明白了,我应该做的就是改变:
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.AR, Lucene.Net"/>
使用:
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net.Contrib.Analyzers"/>
同时更改SearchProvider。