我在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>
答案 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