簡體   English   中英

如何在Sitecore 7.x中進行多面搜索?

[英]How to do faceted search in Sitecore 7.x?

誰能指出我一些文檔,逐步說明如何在Sitecore 7.x進行多面搜索? 我已經閱讀了官方的Sitecore文檔(項目存儲桶和搜索開發人員指南)。

我發現該文件非常令人困惑。 第2章是關於物料桶的。 好吧,我不需要這個項目的物料桶。 我沒有那么多內容項。 第3章稱為“搜索”,但我認為它是關於在Sitecore界面中從“項目存儲桶”中搜索內容項目的全部內容。

這很有趣-但不是我所需要的。 第5章是關於使用項目桶進行開發。 但是,當他們談論在Sitecore界面中進行搜索時以及何時談論在您的網站中進行搜索時,對我來說還不清楚。

我正在尋找的是逐步清晰的解釋,說明如何設置索引和構面,然后提供有關如何執行構面搜索的特定代碼示例。 有人知道這是否在線上嗎?

Sitecore開發團隊為發布Sitecore 7(引入了新的搜索功能)提供了一系列不錯的博客和Google Hangouts。 您可以在此處訪問這些網站: http : //www.sitecore.net/Learn/Blogs/Technical-Blogs/Sitecore-7-Development-Team/Posts/2013/10/Facets-Explained.aspx

在設置索引方面,請使用提供的配置文件,即Sitecore.ContentSearch.Lucene.Index.Web.config,並根據需要使用配置。 默認情況下,您將已經設置了三個索引(sitecore_content_web,sitecore_content_core和sitecore_content_master)。 如果要自定義,則只需編輯當前配置。 索引配置的“位置”部分最相關,節點應該是自我解釋的,但主要節點是:

  • 根目錄:定義在Sitecore內容樹中的索引位置(例如Sitecore / Content / MyStuff)
  • 數據庫:指定使用哪個數據庫(Master,Web或Core)

每個索引可以有多個搜尋器,但是您可能不需要,我也不會以此為起點。

關於方面,這主要是由Linq擴展名'FacetOn'驅動的。 可以將其應用於索引上的Linq查詢,如下所示:

        using (IProviderSearchContext context =  ContentSearchManager.GetIndex(Constants._webContentIndexName).CreateSearchContext())
        {
            var model = new SearchResultViewModel();

            //Get all items in home ordered by content data
            //Faceted on semantics so will work with tagging
            IQueryable<CustomSearchResultItem> query =     context.GetQueryable<CustomSearchResultItem>()
                .Where(i => i.Path.StartsWith(Constants._startPath))
                .Where(i => i.Content.Contains(searchTerm))
                .Where(i => i.TemplateId != exclusionTemplate)
                .FacetOn(i => i.Semantics);

            //DO SOMETHING WITH RESULTS

        }

只是為了澄清任何混淆,當文檔引用物料桶等時,這與執行搜索的方式沒有什么不同。 Sitecore的偉大之處在於,即使GUI也是基於您用於開發解決方案的相同API構建的。 因此,在圍繞“物料桶”進行內部搜索的地方,您可以在自己的搜索解決方案中使用這些示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM