2016-11-10 79 views
1

我們需要基於Kentico搜索索引獲得搜索框的自動完成工作,但一半的網站位於CMS應用頁面中,另一半位於MVC中。所以自動完成webpart在CMS應用頁面上工作,但不是MVC應用頁面。Kentico智能搜索索引 - 使用API​​讀取它的任何方式?

我們正在探索的一個選項是在站點兩側使用Twitter Typeahead js庫,這需要搜索條件在json文件中。

因此,我們希望能夠通過Kentico API加載搜索索引條款,然後將其寫入json文件。

SearchIndexInfo對象似乎沒有辦法獲取將索引條目寫入索引文件。

更新

對於澄清:我們可以做到通過API進行搜索,但在searchresultitems只有標題和內容領域的回報,他們不包含存儲在索引中的所有搜索詞文件。

例如,自定義頁面類型的搜索索引可能會根據DocumentName,Description,Location,City,Company Name,DesignCategory字段構建索引。所有這些將被存儲在索引的某個地方,那麼我們如何閱讀存儲在索引中的條款?

不只是結果,它只有DocumentName(標題)和Description(內容)。

我們基本上試圖將搜索索引文件轉換爲json表示,而不是搜索結果。當然,如果SmartSearchDialog webpart只是在標題和內容字段上進行預測性搜索,那麼我們只需要這樣做,但我相信SmartSearchDialog確實不會實際搜索?

感謝

+0

當然,如果我們不能這樣做,我們可能可以實現一個ajax方法來調用一個mvc操作,該操作根據用戶輸入的術語進行搜索。 –

回答

0

羅馬人在評論答案並不像它會工作,並在想着它多一些我們也許試圖做一些事情過於複雜,並沒有提出正確的問題,也許。

與其試圖複製json中的搜索索引以供twitter typeahead自動完成使用,也許更好的方法是保持簡單,只使用搜索結果的標題和內容字段。

然後,爲了在搜索結果的內容字段(例如項目位置)中獲得額外的字段,我們可以自定義搜索建築代碼(CMSLoaderAttribute),將額外的字段添加到SearchDocument的內容字段中。

3

有API它:

// Gets the search index 
SearchIndexInfo index = SearchIndexInfoProvider.GetSearchIndexInfo("NewIndex"); 

if (index != null) 
{ 
    // Prepares the search parameters 
    SearchParameters parameters = new SearchParameters() 
    { 
     SearchFor = "home", 
     SearchSort = "##SCORE##", 
     Path = "/%", 
     ClassNames = "", 
     CurrentCulture = "EN-US", 
     DefaultCulture = CultureHelper.EnglishCulture.IetfLanguageTag, 
     CombineWithDefaultCulture = false, 
     CheckPermissions = false, 
     SearchInAttachments = false, 
     User = (UserInfo)MembershipContext.AuthenticatedUser, 
     SearchIndexes = index.IndexName, 
     StartingPosition = 0, 
     DisplayResults = 100, 
     NumberOfProcessedResults = 100, 
     NumberOfResults = 0, 
     AttachmentWhere = String.Empty, 
     AttachmentOrderBy = String.Empty, 
    }; 

    // Performs the search and saves the results into a DataSet 
    System.Data.DataSet results = SearchHelper.Search(parameters); 

    if (parameters.NumberOfResults > 0) 
    { 
     // The search found at least one matching result, and you can handle the results 

    } 
} 

更多細節here

+0

感謝羅馬,但不是那樣返回searchresult項目? searchresult項目只返回標題和內容字段的權利?不是索引文件中存儲的所有搜索項?或者是,什麼SmartSearchDialog呢,它只是做了標題和內容領域的預測/預輸入功能? –

+0

智能搜索搜索任何配置爲可在頁面類型或對象中搜索的字段。我相信這就是智能搜索對話框以及預測搜索。 –

+0

感謝羅馬人,但是這不只是返回searchresult項目? searchresult項目只返回標題和內容字段的權利?不是索引文件中存儲的所有搜索項?例如,自定義頁面類型的搜索索引可能會根據DocumentName,Description,Location,City,Company Name,DesignCategory字段構建索引。所有這些將被存儲在索引的某個地方,那麼我們如何閱讀存儲在索引中的條款? 不只是結果,它只有文檔名(標題)和描述(內容)。 –

相關問題