Question

I have a SharePoint 2016 on-premises farm that contains a large list of items with several text fields that should be searchable.

Drawings:
Title    Name    Building    Approval Date    Category

Each of these fields should be searchable. Performing a standard search on the list returns the correct results. For example, searching for "333" will return all drawings that contain 333 in any field. However, when attempting to search a specific field using KQL, I am not getting any results. I am attempting to search the Building field for the value "333". I have tried searching using the syntax Building:333, Building:333* and Building:333. None of these queries returned any results. I can go to the list view and filter by the building column and it returns the correct results. I have tried searches on other columns with the same results. I also attempted to search filtering out any empty Buildings by using the syntax Building<>"". Rather than returning no results, this returned ALL the items in the list including the ones in which the Building column was empty.

This is the first time I've attempted to use KQL, so it's very possible that I don't have something set up correctly or I don't have a required feature turned on. However, at this point, I don't even know what to look for. Can anyone tell me why this might be happening?

I have also verified that my search index is running correctly and all the drawings appear to be indexed as they are showing up in searches not using KQL.

Was it helpful?

Solution

We must use the managed property in KQL and the managed property must be queryable.

Information about how to use Keyword Query Language to query for search in SharePoint:

https://dev.office.com/sharepoint/docs/general-development/keyword-query-language-kql-syntax-reference

Navigate to Search Service Application -> Search schema -> Managed Properties, check whether the crawled property of “Building” has been mapped to a queryable managed property. If it does not have a managed property, create a managed property and check Queryable, add a mapping to “Building” crawled property. After that, you must perform a full crawl.

Note: In SharePoint, only site columns that contain values will automatically become managed properties when they are crawled. If you are using list columns, you need to map the crawled property of this column to the an existing managed property and perform a full crawl.

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top