0

我正在处理一个 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>
4

2 回答 2

1

如果在现有项目上失败,您可能需要删除现有索引,然后重新启动应用程序。

索引都存储在~/app_data/Temp/ExamineIndexes/,因此您可以从该文件夹中删除特定的索引文件并重新启动应用程序。这应该会提示 Umbraco 开始重新索引内容。

此外,您还应该设置 the ExamineSearchProvidertoo,而不仅仅是ExamineIndexProvider. 这是在同一个配置文件中。这可确保使用相同的Analyzer类型来搜索结果,就像索引它们一样。

编辑

查看配置,您Analyzer=""ExternalSearcher

进一步编辑

该值Lucene.Net.Analysis.AR不是有效的分析器值,它只是分析器的命名空间。我没有像我假设的那样检查,但是在这两种情况下,值都应该是:

analyzer="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net"

见这里: http: //lucenenet.apache.org/docs/3.0.3/d2/d94/class_lucene_1_1_net_1_1_analysis_1_1_a_r_1_1_arabic_analyzer.html

于 2013-08-12T14:04:09.147 回答
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 为好。

于 2013-08-13T11:49:08.837 回答