1

http://technet.microsoft.com/en-us/library/ff621097(v=office.14).aspxの指示に従って、いくつかの管理プロパティを作成しました。次に、次のコードを使用して、KeywordQuery 検索でドキュメントのみを検索するカスタム SharePoint アプリケーション ページを作成しました。

using System;
using System.Collections.Generic;
using System.Data;
using Microsoft.Office.Server.Search.Query;
using Microsoft.SharePoint.WebControls;

protected System.Data.DataTable TrySearch(string keywords, Int32 pageSize, Int32 page, out Int32 totalPages)
{

    int startRow = (page - 1)*rowLimit;

    var kwq = new KeywordQuery(Site);
    kwq.QueryText = string.Format("Title:\"{0}\"", keywords);
    kwq.ResultTypes = ResultType.RelevantResults;
    kwq.RowLimit = pageSize;
    kwq.StartRow = startRow;
    kwq.TrimDuplicates = true;
    kwq.HiddenConstraints = "path:\"*/User Docs*\" AND IsDocument:true";
    kwq.KeywordInclusion = KeywordInclusion.AllKeywords;

    // Default
    kwq.SelectProperties.Add("WorkId");
    kwq.SelectProperties.Add("Rank");
    kwq.SelectProperties.Add("Title");
    kwq.SelectProperties.Add("Path");
    kwq.SelectProperties.Add("SiteName");
    kwq.SelectProperties.Add("HitHighlightedSummary");
    kwq.SelectProperties.Add("HitHighlightedProperties");
    kwq.SelectProperties.Add("ContentClass");
    kwq.SelectProperties.Add("IsDocument");

    // Custom (they come back blank even when set as managed properties)
    kwq.SelectProperties.Add("IntroText");
    kwq.SelectProperties.Add("Date");
    kwq.SelectProperties.Add("ListItemId");        

    ResultTableCollection rtc = kwq.Execute();

    var results = new DataTable();

    if (rtc.Count == 0)
    {
        totalPages = 0;
        return results;
    }

    using (ResultTable relevantResults = rtc[ResultType.RelevantResults])
    {
        results.Load(relevantResults, LoadOption.OverwriteChanges);
        totalPages = (int) Math.Round((double) relevantResults.TotalRows/pageSize);
    }

    return results;
}

私の問題は、私が何をしても、管理プロパティの値を取得できないことです。検索はうまくいきます。それに応じてフィルタリングして、期待どおりの結果を得ることができます。カスタム列が空であることだけです。私は主に ID に関心がありますが、要求したすべてのカスタム プロパティを取得したいと思っています。

サーバーで見逃した設定があるのでしょうか? どんな助けでも大歓迎です。

4

1 に答える 1

0

もう解決策にたどり着いたと思いますが、同じ問題に苦しんでいる人にとっての解決策は次のとおりです。

クロールされたプロパティを既存または新しい管理プロパティにマッピングした後、再度クロールします。それでおしまい。要求されたプロパティのデータが表示されます。

于 2014-02-04T07:08:19.140 に答える