鍋綿ブログ

C#・SharePoint・SharePoint Framework・Office365を中心に扱うブログです。

ハブサイト内のコンテンツを検索するための検索クエリ

SharePointの検索クエリでハブ サイト内のコンテンツを検索することができます。検索クエリはプログラムからだけではなくモダン標準Webパーツの「強調表示されたコンテンツ」でも利用できます。表現の幅が広がるのでお勧めです。

 

 

検索クエリとは

SharePointの検索機能は、ページやアイテムを直接検索するわけではありません。定期的に収集される検索インデックスから結果を表示します。このインデックスへの問合せに使う構文を検索クエリと呼びます。厳密にはKQLとFQLの2つの構文がありますが、この記事ではKQLを扱います。

「検索のための構文なんて開発者向けだろ?」と思ったそこの貴方。モダン標準機能の「強調表示されたコンテンツ」Webパーツで「カスタム クエリ」の欄にもKQLを書くことができますよ。

f:id:micknabewata:20200304164156p:plain

タイトルが「TEST」で始まるもの全部を表示する例

KQLを使いこなせば表現の自由度がかなりアップするので非常にお勧めです。

ハブ サイト内のコンテンツだけを返すようにする書き方

こうです。

(DepartmentId:{HubSiteId} OR DepartmentId:HubSiteId)

赤字部分はハブ サイトのIDで差し替えます。ハブ サイトのIDはAPIで取得できます。ブラウザで以下URLにアクセスすると、「HubSiteId」というプロパティが得られます。

SiteUrl/_api/site?$select=IsHubSite,HubSiteId

 赤字部分はハブ サイトのURLで差し替えます。例えばこう。

https://nabewata365.sharepoint.com/sites/home1/_api/site?$select=IsHubSite,HubSiteId

 得られる結果のサンプルはこうです。

~ 省略 ~

<d:HubSiteId m:type="Edm.Guid">7617650e-719a-4ea2-af96-54c32ff62f7c</d:HubSiteId><d:IsHubSite m:type="Edm.Boolean">true</d:IsHubSite>

~ 省略 ~

間違ってハブ サイトでないSharePointサイトのURLを叩いている場合、IsHubSiteがfalseになります。簡単ですね。

 

以上、参考になれば幸いです。