Слова с дефисом не найдены с помощью 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

Другие вопросы по тегам