检查索引器

时间:2013-08-12 12:58:22

标签: umbraco

我正在开发一个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>

2 个答案:

答案 0 :(得分:1)

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

索引全部存储在~/app_data/Temp/ExamineIndexes/,因此您只需从 此文件夹中删除特定的索引文件夹,然后重新启动应用程序。这应该促使Umbraco开始重新索引内容。

此外,您还应该设置ExamineSearchProvider,而不仅仅是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

答案 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。