2016-11-10 5 views
1

Kentico検索インデックスに基づいて検索ボックスの自動補完作業を行う必要がありますが、サイトの半分はCMSアプリケーションページにあり、半分はMVCにあります。したがって、オートコンプリートWebパーツは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 Webパーツがタイトルフィールドとコンテンツフィールドのみで予測検索を行っている場合は、それだけでも問題はありませんが、SmartSearchDialogは実際の検索を行います。

おかげ

+0

もちろん、それができない場合は、ユーザーが入力した用語に基づいて検索するmvcアクションを呼び出すためのajaxメソッドを実装することもできます。 –

答えて

0

コメントのローマの答えはうまくいかないように見え、それについて考えてみると、おそらくもっと複雑すぎることをしようとしていて、正しい質問をしていない可能性があります。

jsonの検索インデックスをtwitterの先読みオートコンプリートで使用する代わりに、より簡単な方法として、検索結果のタイトルとコンテンツフィールドを使用するほうがよいでしょう。

次に、検索結果のコンテンツフィールド(プロジェクトの場所など)に追加のフィールドを追加するために、検索ビルディングコード(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

Romanに感謝します。検索結果を返しますか?検索結果アイテムは、タイトルとコンテンツフィールドでのみ返されます。索引ファイルに格納されているすべての検索用語ではありませんか?または、SmartSearchDialogの機能は、タイトルフィールドとコンテンツフィールドの予測/先読み機能だけですか? –

+0

スマート検索は、ページタイプまたはオブジェクトで検索可能に設定されているフィールドを検索します。私はこれが、スマートな検索ダイアログと予測的な検索がするものだと考えています。 –

+0

Romanに感謝しますが、検索結果を返すだけではありませんか?検索結果アイテムは、タイトルとコンテンツフィールドでのみ返されます。索引ファイルに格納されているすべての検索用語ではありませんか?たとえば、カスタムページタイプの検索インデックスは、DocumentName、Description、Location、City、Company Name、DesignCategoryフィールドに基づいてインデックスを作成します。これらはすべてインデックスのどこかに格納されますので、インデックスに格納されている用語をどのように読みますか? 結果には、DocumentName(タイトル)とDescription(コンテンツ)のみが含まれます。 –

関連する問題