Слова с дефисом не найдены с помощью WhitespaceAnalyzer - ExamineSearch Umbraco
Я использую поиск Examine в приложении Umbraco 7. Почему-то я не получаю никаких результатов при поиске слов, содержащих дефис, например, "Tag-name".
Я настроил Examine для использования WhitespaceAnalyzer как для ExamineSearchProvider, так и для ExamineIndexProvider. Я также удалил кеш в папке 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 ответа
Следует рассматривать дефис как часть слова. Попробуйте установить пакет exam inspector и посмотрите, что хранится в индексе: http://our.umbraco.org/projects/backoffice-extensions/examine-inspector
Вы также можете выписать запрос Raw Lucene, который генерируется вашим поисковым кодом в Examine, чтобы узнать, экранирован ли дефис или изменен.
На самом деле это разделяет слово на "-". Проблема не в указателе или настройках. Попробуйте использовать класс UmbracoHelper и метод TypedSearch(ключевые слова, false, "YourSearcher"), обратите внимание, что для useWildCards установлено значение "false". Для получения дополнительной информации см. Метод поиска здесь: https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/PublishedContentExtensions.cs