2014-10-07 2 views
0

Я использую Изучить поиск в приложении Umbraco 7. Так или иначе, я не получаю никаких результатов при поиске слов, содержащих дефис, например «Tag-name».Слова с дефис не найдены с WhitespaceAnalyzer - ExamineSearch Umbraco

Я настроил 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> 

ответ

0

Он должен относиться к дефис как часть слова. Попробуйте установить пакет инспекции инспектора и посмотреть, что хранится в индексе: http://our.umbraco.org/projects/backoffice-extensions/examine-inspector

Вы также можете выписать запрос Raw Lucene, который генерируется вашим поисковым кодом в Examine, чтобы узнать, экранируется или изменен ли дефис.

0

Фактически он разбивает слово на '-'. Проблема не в индексе или настройках. Попробуйте использовать класс UmbracoHelper и метод TypedSearch (ключевые слова, false, «YourSearcher»), обратите внимание, что useWildCards установлено как «false». Для получения дополнительной информации см. Метод Поиск здесь: https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/PublishedContentExtensions.cs