首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查指标

检查指标
EN

Stack Overflow用户
提问于 2013-08-12 12:58:21
回答 2查看 2.1K关注 0票数 0

我正在从事一个asp.net项目,并且在更改检查索引时遇到了一些问题。

我以前有一个StandardAnalyzer作为索引器,但是现在我需要使用一个ArabicAnalyzer作为索引器。当单独测试时,我所做的一切都是改变的:

代码语言:javascript
复制
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>

通过以下方式:

代码语言:javascript
复制
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.AR, Lucene.Net"/>

而且运作正常。当尝试在我现有的项目上做同样的事情时,我在YSOD页面中得到了下面的异常。

第31行:

描述:在处理处理此请求所需的配置文件时发生错误。请查看下面的具体错误细节,并适当修改您的配置文件。

解析器错误消息:值不能为空。

我没有找到解决办法。你有什么办法解决这个问题吗?

更新:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-12 14:04:09

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

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

此外,您还应该设置ExamineSearchProvider,而不仅仅是ExamineIndexProvider。这是在同一个配置文件中。这确保使用相同的Analyzer类型搜索结果和索引结果。

编辑

查看配置,您在ExternalSearcher上缺少了一个ExternalSearcher

进一步编辑

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

代码语言:javascript
复制
analyzer="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net"

见此处:analyzer.html

票数 1
EN

Stack Overflow用户

发布于 2013-08-13 11:49:08

我明白了,我应该做的是改变:

代码语言:javascript
复制
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.AR, Lucene.Net"/>

通过以下方式:

代码语言:javascript
复制
<add name="EntityIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net.Contrib.Analyzers"/>

也改变了SearchProvider。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18187613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档