Quantcast
Channel: TechNet Blogs
Viewing all articles
Browse latest Browse all 36188

SharePoint Enterprise Search–Searching with Scope

$
0
0

Introduction

This blog post demonstrates a sample that queries against to a specific site in my SharePoint Online portal.

Context

SharePoint Server 2013 supports building search queries in 2 languages: Keyword Query Language (KQL) and FAST Query Language (FQL). Yet, KQL is selected default in SP2013.  

The solution demonstrated below searches a SharePoint site by passing a KQL query and consists of the following components:

    SharePoint site: My Office365(o365) SharePoint Online(SPO) site where:
      Search Service Application (SSA) functional. For details, you can visit Create and configure a Search service application in SharePoint Server 2013Managed Metadata Service (MMS) enabled and manage terms created. I have created a term set named Colors in my term store with these values: {Blue, Green, Orange, Purple, Red, Yellow}.    Details, you can visit Overview of managed metadata service applications in SharePoint Server 2013A result source defined for a site (or sub site).  I have outlined its configuration steps just below.
    Console application – the client: where I use Client Side Object Model (CSOM) search API for querying my SPO site with managed properties.

 

Steps for configuring the result source

Steps are really straight-forward here; once signed in, you can follow the steps displayed below.

 rs1
 rs2
 rs3
 rs4

Note that:

    Use of a result source will benefit you from search scope perspective. The client API will use the id (Guid) which can be obtained from the browser as highlighted in the last picture above.

 

Implementation – source code

    First it creates the client context with my own credentials.

    It builds KeywordQuery object’s QueryText property as {Property}:{theValue} and then constructs SearchExecutor and call its ExecuteQuery method passing the keyword query object just created. It sets SourceId property of KeywordQuery object to the result source id.

    Then it displays the results on the screen

 

Query related source code shared below.

   1:using System;
   2:using Microsoft.SharePoint.Client;
   3:using Microsoft.SharePoint.Client.Search;
   4:using Microsoft.SharePoint.Client.Search.Query;
   5:  
   6:using SharePointContext;
   7:  
   8:namespace Console1
   9: {
  10:class Program
  11:     {
  12:static ClientContext _clientContext;
  13:  
  14:staticvoid Main(string[] args)
  15:         {
  16:try
  17:             {                
  18:                 CloudClientContext ccc = CloudClientContext.Instance;
  19:                 ccc.Password = System.Configuration.ConfigurationManager.AppSettings["sp_pwd"];
  20:                 ccc.UserName = System.Configuration.ConfigurationManager.AppSettings["sp_tenant"];
  21:                 ccc.SiteUrl = System.Configuration.ConfigurationManager.AppSettings["sp_siteUrl"];
  22:  
  23:                 _clientContext = ccc.GetContext();
  24:  
  25:                 DoSearch();
  26:             }catch (Exception ex)
  27:             {
  28:string str = ex.Message;
  29:             }
  30:         }
  31:  
  32:staticvoid DoSearch()
  33:         {
  34:             KeywordQuery kq = new KeywordQuery(_clientContext);
  35:             kq.QueryText = GetKeywords();
  36:             kq.SourceId = Guid.Parse(System.Configuration.ConfigurationManager.AppSettings["sp_sitesourceId"]);   
  37:
  38:             SearchExecutor searchExecutor = new SearchExecutor(_clientContext);
  39:  
  40:             ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(kq);
  41:
  42:             _clientContext.ExecuteQuery();
  43:  
  44:foreach (var resultRow in results.Value[0].ResultRows)
  45:             {
  46:                 Console.WriteLine("#{0}:{1}\r\n ({2})\t {3}", 
  47:                     resultRow["piSearchResultId"].ToString().Split('_')[0], 
  48:                     resultRow["Title"], 
  49:                     resultRow["Path"], 
  50:                     resultRow["Write"]);
  51:             }
  52:  
  53:             Console.ReadLine();
  54:         }
  55:  
  56:staticstring GetKeywords()
  57:         {
  58:returnstring.Format("'Color':'{0}'","Blue");
  59://return string.Format("author:{0} AND filetype:{1} OR 'Color':'{2}'", "Mecit Atmaca", "docx", "Orange"); //more granular search
  60:         }
  61:     }
  62: }

Viewing all articles
Browse latest Browse all 36188

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>