用WhitespaceAnalyzer找不到连字符的单词 - ExamineSearch Umbraco

时间:2014-10-07 09:08:07

标签: umbraco lucene.net analyzer hyphen examine

我在Umbraco 7应用程序中使用Examine搜索。不知何故,我在搜索包含连字符的单词时没有得到任何结果,例如“Tag-name”。

我已经为ExamineSearchProvider和ExamineIndexProvider设置了检查以使用WhitespaceAnalyzer。我还删除了tempfolder中的缓存,但仍然没有结果。我检查了数据库中的值,它们的格式与查询“XXX-xxx”的格式相同。我也试图逃避查询,但这不会改变结果。

这里有什么我没看到的吗?

在ExamineSettings.config中:

<Examine>
    <ExamineIndexProviders>
        <providers>

  <!-- custom search index provider -->
  <add name="MySearchIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
   supportUnpublished="false"
   supportProtected="true"
   interval="10"
   analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net"
   indexSet="MySearch"/>

   </providers>
</ExamineIndexProviders>

<ExamineSearchProviders defaultProvider="MySearchSearcher">
   <providers>

    <!-- custom search provider -->
     <add name="MySearchSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
       analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net" indexSet="MySearch"  enableLeadingWildcards="true"/>


      </providers>
   </ExamineSearchProviders>

</Examine> 

在ExamineIndex.config中:

<ExamineLuceneIndexSets>

<IndexSet SetName="MySearch" IndexPath="~/App_Data/TEMP/ExamineIndexes/MySearch/">
<IndexAttributeFields>
  <add Name="id" />
  <add Name="nodeName"/>
  <add Name="updateDate" />
  <add Name="writerName" />
  <add Name="nodeTypeAlias" />
</IndexAttributeFields>
<IndexUserFields>
  <add Name="nodeName" />
  <add Name="content"/>
  <add Name="tags" />
  <add Name="category" />
</IndexUserFields> 
<IncludeNodeTypes>
  <add Name="article" />
  <add Name="note" />
</IncludeNodeTypes>
</IndexSet>
</ExamineLuceneIndexSets>

2 个答案:

答案 0 :(得分:0)

它应该将连字符视为单词的一部分。尝试安装检查检查器包并查看索引中存储的内容:http://our.umbraco.org/projects/backoffice-extensions/examine-inspector

您还可以在“检查”中写出搜索代码生成的Raw Lucene查询,以查看连字符是否被转义或修改。

答案 1 :(得分:0)

实际上它将单词拆分为' - '。问题不在索引或设置中。尝试使用UmbracoHelper类和方法TypedSearch(keywords,false,“YourSearcher”),请注意useWildCards设置为“false”。有关详情,请参阅方法搜索:https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/PublishedContentExtensions.cs