2015-11-02 2 views
0

Поиск по содержимому (используя Examine) на наших веб-сайтах нарушен. Проблемы могут быть разделены на три различные категории:Как настроить проверку Searcher для исключения удаленных страниц

Поиск возвращает удаленные страницы: Я не уверен, как удалить удаленное содержимое из результата поиска. Есть ли способ добавить критерии фильтра для исключения удаленных страниц?

Поиск возвращает содержимое со всех сайтов: Мы используем два веб-сайта для двух разных стран (Австралия и Новая Зеландия) в одном экземпляре Umbraco. Проблема заключается в том, что результат поиска возвращает страницы с обоих сайтов. Нам не нужны страницы AU на результат поиска в Новой Зеландии и наоборот. Как создать поисковый запрос, чтобы ограничить его определенным идентификатором корневого узла?

Создание страниц без шаблона: Некоторые узлы контента не имеют связанных с ними шаблонов и должны отображаться как часть родительского узла. Есть ли способ ограничить поиск конкретными типами документов? Но, если содержимое найдено на дополнительном узле, воспитывайте родительский узел с определенным типом документа?

Я, вероятно, задаю слишком много вопросов в одном сообщении, но, я думаю, другие пользователи могли столкнуться с такими проблемами раньше.

код я использую до сих пор:

private List<SiteSearchResult> GetSiteResults(string query, out int totalResults) 
{ 
    var criteria = ExamineManager.Instance 
     .SearchProviderCollection["WebSearcher"] 
     .CreateSearchCriteria(IndexTypes.Content); 
    var filter = 
     criteria.GroupedOr(
      new[] 
      { 
       "nodeName", "heading", "content", "metaKeywords", "title", "umbracoNaviHide", "umbracoUrlName", 
       "umbracoUrlAlias", "metaCategory", "metaDescription", "metaTags", "heading", "subHeading", 
       "quote", "author", "socialCopy", "socialTitle", "socialTitle2", "thumbTitle", "thumbTitle2", 
       "thumbCopy", "thumbQuote", "url", "location" 
      }, query) 
      .Compile(); 

    var searchResults = 
     ExamineManager.Instance.SearchProviderCollection["WebSearcher"].Search(filter) 
      .OrderByDescending(x => x.Score); 
    totalResults = searchResults.Count(); 
    var results = new List<SiteSearchResult>(); 

    foreach (var item in searchResults) 
    { 
     var heading = ""; 
     var copy = ""; 
     var umbracoHelper = new UmbracoHelper(UmbracoContext.Current); 

     var url = umbracoHelper.Url(item.Id, UrlProviderMode.Relative); 

     if (url.Length == 0) 
     { 
      continue; 
     } 

     if (url.StartsWith("/forms/")) 
     { 
      continue; 
     } 

     // Do many things here 

     results.Add(r); 
    } 

    return results; 
} 

ответ

2

Поиск возвращает удаленные страницы:

Не уверен, если это поможет, но вы могли бы просто исключить неопубликованные/защищенные результаты из индекса , Это можно сделать в файле ExamineSettings.config. Для вас это должно выглядеть что-то вроде этого:

<add name="WebIndexer" 
    type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine" 
    supportUnpublished="false" 
    supportProtected="false" 
    analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" /> 

Флаги supportUnpublished и supportProtected определить, если неопубликованные/защищенный контент должен храниться в определенном индексе.

Воспитывая страницу без шаблона

Опять же, вы могли бы изменить свой файл ExamineIndex.config и просто указать, какие типы документов должны быть проиндексированы, и которые не должны. Например:

<IndexSet SetName="WebIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/{machinename}/Features/"> 
    <IndexAttributeFields> 
    <add Name="id" EnableSorting="true" /> 
    </IndexAttributeFields> 
    <IndexUserFields>  
    <add Name="exampleField" /> 
    </IndexUserFields> 
    <IncludeNodeTypes> 
    <add Name="DocumentType1" /> 
    </IncludeNodeTypes> 
</IndexSet> 

вышесказанному индекс будет только containt узлы типа документа «DocumentType1», что больше он будет хранить только поле «ID» (и включить сортировку по нему) от системы единиц и «exampleField "из полей, определенных пользователем. Вы также можете использовать EncludeNodeType, чтобы указать, какие типы документов не должны помещаться в индекс.

Поиск возвращает содержимое из всех сайтов:

Если типы документов, используемых в этих двух местах различны, то создание двух отдельных индексов для каждого должны решить. Однако, если нет, я в настоящее время не знаю, как правильно это решить в данный момент. Быстрое исправление может заключаться в добавлении поля к типу документа, который содержит значение, которое указывает, является ли документ из области NZ или AU. Затем вы можете добавить его в индекс и фильтровать его при поиске. Вполне возможно, есть лучший способ сделать это, хотя.

Исследовать ДОКУМЕНТАЦИЯ

Если вам нужна информация о том, как иметь дело с Исследовать индексы и искатель, вы могли всегда look here.