Hello Blog Readers,
Sorry for the delay in posts recently things at work in terms of projects, but I did have an extremely
helpful Result Source Syntax you should know!
From the title of this blog article you have probably guessed what I
will discuss, how to actually only search on the current site!
I can’t believe how many copy and paste blogs are out there
since everyone’s “solution” of Path:{Site} or Path:{Site.URL} does not
work! I was so frustrated after clicking
through pages of Google links (dear god I made it to page 3… where results go
to die) that I just sat down and tried to figure out a solution myself.
For those of you who don’t want the journey or explanation
the key to your success is to include this as part of your query:
WebId={Site.ID}
Why is The Path
Solution Incorrect?
The Path solution is incorrect since Path:{Site} will include
any content from your sub sites which matches the criteria. This is because the child sites includes the
path of the parent site, which means you will always get the data from the sub sites
which inherit from the parent’s Path.
You may be thinking well Dan, why don’t you just use Path={Site} instead
of contains. If you have tried this syntax on its own, you most likely only received the Home Page of the site from which
you were running the query from. Content
within the site obviously does not have the URL of the homepage, so using
equals will only return the one page which matches the path exactly. In short, you can use Path:{Site} when you
are trying to exclude contents from parent sites, but include content from the
current site and it’s children.
How to Return Results
ONLY From the Current Site:
To only obtain results from the site from which the query is
being run, WebId={Site.ID} should be used.
WebId is an out of the box managed property which houses the site’s
GUID / ID, so essentially what we are
saying in the above is that we want to only return items where the WebId is
equal to the current site’s GUID/ID from which the query is being issued from.
Simple Example Query:
SPContentType=”Item” AND WebId={Site.ID}
This query will only retrieve items which match the item
content type display name and where the WebId is equal to the current sites
GUID / ID. If you were to try this same
query from a top level site utilizing Path:{Site} instead of WebId, like the
other blogs and sites suggest, you will retrieve Items with this content type
from all of the sub sites beneath this path.
The query above will ONLY return items from the current site J
Best of Luck!
Dan