2016-06-13 2 views
1

Интересно, может ли кто-нибудь помочь мне ... Я пытаюсь найти работу по поиску в Umbraco 7.3, но я борюсь с документацией.Umbraco 7+ Поиск

https://our.umbraco.org/documentation/Reference/Searching/Examine/quick-start

, когда я смотрю на следующие файлы ExamineSettings.config и ExamineIndex.config они, кажется, уже есть ExternalIndexer, ExternalSearcher и ExternalIndexSet уже определены. Я предполагаю, что это улучшение с 4.11, которое, как представляется, было написано для этого документа.

Но это раздел после того, где я, кажется, заблудился ... Является ли раздел Razor для частичного просмотра? И каков должен быть полный код?

Я хотел бы предположить, если это частичный вид я бы создать страницу, чтобы включить частичный вид @ (Html.Partial («искатель»))

и если я просматривал страницу добавляется строка запроса ~ /? query = keyword, это сработает?

Любая помощь будет отличной.

Заранее спасибо

ответ

2

В Config/ExamineIndex.config вы создаете новый IndexSet со всеми свойствами, которые хотите, чтобы пользователи могли выполнять поиск.

Umbraco.TypedSearch (Request.QueryString ["query"]); будет искать что-либо на всей странице, но если вы правильно настроили UmbracoExamine, вы можете выбрать, какие типы документов вы хотите, чтобы люди могли искать, а также вы можете выбрать, какие свойства вы хотите, чтобы люди могли индексировать содержание на основе.

Например:

<IndexSet SetName="ExternalTopLevelSearchSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/{machinename}/TopLevelSearch/"> 
    <IndexAttributeFields> 
     <add Name="Name"/> 
     <add Name="bodyText"/> 
     <add Name="tags"/> 
     <add Name="themes"/> 
     <add Name="parentID"/> 
    </IndexAttributeFields> 
    <IncludeNodeTypes> 
     <add Name="ArticlePage" /> 
    </IncludeNodeTypes> 
    </IndexSet> 

Затем вы должны создать в Индексатор Config/ExamineSettings.config

<add name="ExternalTopLevelIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine" 
     supportUnpublished="false" 
     supportProtected="false" 
     interval="10" 
     analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" 
     indexSet="ExternalTopLevelSearchSet"/> 

Теперь вы создаете поиска поставщика, а также в Config/ExamineSettings.config

<add name="ExternalTopLevelSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" 
      analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" indexSet="ExternalTopLevelSearchSet" enableLeadingWildcards="true"/> 

Вот мой код C#, используя вышеприведенный «ExternalTopLevel».

public List<SearchResult> SearchResults 
     { 
      get 
      { 
       if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["q"])) { 
        var searcher = ExamineManager.Instance.SearchProviderCollection["ExternalTopLevelSearcher"]; 
        // Search criteria. 
        var searchCriteria = searcher.CreateSearchCriteria(BooleanOperation.Or); 
        var q = HttpContext.Current.Request.QueryString["q"].ToLower().Trim().Split(' '); 
        var contentType = HelperClass.GetContentTypeNodes().FirstOrDefault(item => q.Contains(item.Name.ToLower())); 
        q = q.Where(i => i.Length > 3).ToArray(); 
        var query = searchCriteria 
         .GroupedOr(new[] { "nodeName" }, q.Select(x => x.Boost(150)).ToArray()) 
         .Or() 
         .GroupedOr(new[] { "grid" }, q.Select(x => x.Boost(80)).ToArray()) 
         .Or() 
         .GroupedOr(new[] { "tags", "themes", "institutions" }, q.Select(x => x.Boost(110)).ToArray()); 
        // Search results 
        var searchResults = searcher.Search(query.Compile()).OrderByDescending(x => x.Score); 
        return searchResults.ToList(); 
       } 
       return new List<SearchResult>(); 
      } 
     } 

Надеюсь, это поможет вам!

+0

У вас есть это в Razor, если это возможно? – KlydeMonroe

+0

Боюсь, что нет, но код похож. Я использовал его в Razor и переписал его в соответствии с архитектурой, которую я использую. – Mikkel

+0

@ Миккель, я также новичок в изучении этого подхода. Если вы не используете бритву в этом примере, вы просто сохраняете это как файл класса, а просто ... компилируется на страницу?Спасибо – blackhawk

1

Я думаю, что вы можете создать частичный вид макрос внутри Umbraco и выберите Search фрагмент, который будет работать. Затем вы можете сделать @ Html.RenderMacro («псевдоним») в вашем файле шаблона.

+0

Привет - Спасибо за это - В чем разница между частичным представлением и макросом частичного просмотра? Я нашел еще один учебник, но он не работает должным образом, но он позволил мне немного поближе. – KlydeMonroe

+0

Ничего особенного, я думаю. Они находятся в разных папках внутри/Views /, но самое главное, файлы макросов с частичным представлением можно использовать для создания реальных макросов внутри Umbraco :-) –

Смежные вопросы