2016-06-13 13 views
1

誰かが私を助けることができるのだろうか...私はUmbraco 7.3で働いているExamine検索を取得しようとしていますが、ドキュメントに苦労しています。Umbraco 7+ Search

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

私は、次のファイルExamineSettings.configとExamineIndex.configを見たとき、彼らはすでにExternalIndexer、ExternalSearcherとExternalIndexSetがすでに指定されていているようです。私はこれが文書が書かれていると思われる4.11からの拡張であると思います。

私は迷子になってしまった部分です...パーシャルビューの剃刀のセクションはありますか?そして、完全なコードは何にする必要がありますか?

私はそれが部分図であるならば、私は部分ビュー@(Html.Partial(「サーチャー」))を含むようにページを作成します引き受ける

と私はページを閲覧し、クエリ文字列を付加した場合〜 /?query =これは機能するキーワードですか?

助けがあれば助かります。私はあなたがUmbraco内部から部分ビューマクロを作成していきます検索スニペットを選択することができると思い、事前

答えて

2

Config/ExamineIndex.configでは、ユーザーが検索できるようにするすべてのプロパティを持つ新しいインデックスセットを作成します。

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> 

が次にあなたが

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

今コンフィグ/ ExamineSettings.configでインデクサーを作成する必要があり、あなたがConfigでも、検索プロバイダを作成/ ExamineSettings.config

:たとえば

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

私のC#コードは上記の「ExternalTopLevel」-searcherを使用しています。

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

万が一、 – KlydeMonroe

+0

私は恐れていませんが、コードは似ています。私はRazorでそれを持っていて、私が使っているアーキテクチャに合うように書き直しました。 – Mikkel

+0

@Mikkel、私はこのアプローチを学ぶのも初めてです。この例ではカミソリを使用していない場合は、単純にクラスファイルとして保存して、ページにコンパイルするだけですか?ありがとう – blackhawk

1

感謝。テンプレートファイルで@ Html.RenderMacro( "alias")を実行することができます。

+0

こんにちは - ありがとうございます - 部分ビューと部分ビューマクロの違いは何ですか?私は別のチュートリアルを見つけましたが、それは正しく動作するようには見えませんが、少し近づけることができました。 – KlydeMonroe

+0

大きな違いはありません。それらは/ Views /の中の別のフォルダにありますが、最も重要なのは、部分ビューマクロファイルをUmbracoの内部で実際のマクロを作成するために使うことができます:-) –

関連する問題