Crawled Properties naming convention in SharePoint Online
If you are creating custom search experiences in SharePoint Online, you must be familiar with crawled and managed properties. I explained and compared the two in this article. What I would like to do today is explain something that confuses the hell out of users, and that is the syntax or naming convention of SharePoint crawled properties. So today, I want to solve that mystery for you, my loyal followers.
The syntax of crawled properties depends on several factors:
- How the column was created (list/library level, site level, or via the Term store)
- The type of column created (Text, Choice, Date, etc.)
So below, I would like to list the most common types of columns and specify the exact syntax/naming convention for that type.
Crawled Properties vs. Managed Properties
Before I explain the syntax of Crwled properties, it probably makes sense to understand the difference between crawled properties and managed properties in SharePoint Online. For this, please check out this article.
Crawled Properties naming convention for List & Library Columns
If you created your columns locally at the list or library level, you would end up with the following crawled properties:
Text Column
If you create a text column (Single line of Text) at the list or library level, the corresponding crawled property will have the following syntax:
- ows_ColumnName
For example, if you create a Text Column called Project Name, the resulting crawled property will be ows_ProjectName.
Choice Column
If you create a Choice column at a list/library level, the resulting crawled property will have the following syntax:
- ows_ColumnName
For example, if you create a Choice Column locally on a library called Department, the resulting crawled property will be ows_Department.
Date Column
If you create a Date column at a list/library level, the resulting crawled property will have the following syntax:
- ows_ColumnName
For example, if you create a Date Column locally on a library called Expiration Date, the resulting crawled property will be ows_ExpirationDate.
Managed Metadata Column
If you create a Managed Metadata column (in other words, metadata created within the Term Store), you will end up with three crawled properties:
- ows_ColumnName (you can use this crawled property to map to your custom/refinable managed properties)
- ows_taxId_ColumnName (this is a crawled property that is already mapped to the auto-created managed properties. NEVER EVER use this crawled property to map to your own/custom managed properties)
- ColumnName (this is just another crawled property created, not specifically used for anything important)
For example, if you create a Managed Metadata Column locally on a library called Department, the resulting crawled properties will be ows_Department, ows_taxId_Department, and Department.
Crawled Properties naming convention for Site Columns
Site Columns behave a bit differently from list/library columns and have unique syntax too.
Text Column
If you create a text column (Single line of Text) at the site level and then add it to a list or library, you will end up with two crawled properties. They will have the following naming convention:
- ows_ColumnName (you can use this crawled property to map to your custom/refinable managed properties)
- ows_q_TEXT_ColumnName (this is a crawled property that is already mapped to the auto-created managed properties. NEVER EVER use this crawled property to map to your own/custom managed properties)
For example, if you create a Site-Level Text Column called Project Name, the resulting crawled properties created will be ows_ProjectName and ows_q_TEXT_ProjectName.
Choice Column
If you create a Choice column at the site level, and then add it to a list or library, you will end up with two crawled properties. They will have the following naming convention:
- ows_ColumnName (you can use this crawled property to map to your custom/refinable managed properties)
- ows_q_CHCS_ColumnName (this is a crawled property that is already mapped to the auto-created managed properties. NEVER EVER use this crawled property to map to your own/custom managed properties)
For example, if you create a Choice column called Department at the site level, then add this site column to a list or library, add documents, and tag them, the resulting crawled properties created will be ows_Department and ows_q_CHCS_Department.
Date Column
If you create a Date column at the site level, and then add it to a list or library, you will end up with two crawled properties. They will have the following naming convention:
- ows_ColumnName (you can use this crawled property to map to your custom/refinable managed properties)
- ows_q_DATE_ColumnName (this is a crawled property that is already mapped to the auto-created managed properties. NEVER EVER use this crawled property to map to your own/custom managed properties)
For example, if you create a site-level Date column called Expiration Date, then add this site column to a list or library, add documents, and tag them, the resulting crawled properties created will be ows_ExpirationDate and ows_q_DATE_ExpirationDate.
Managed Metadata Column
If you create a Managed Metadata column (in other words, metadata created within the Term Store) at the site level and then add it to the lists or libraries, you will end up with three crawled properties:
- ows_ColumnName (you can use this crawled property to map to your custom/refinable managed properties)
- ows_taxId_ColumnName (this is a crawled property that is already mapped to the auto-created managed properties. NEVER EVER use this crawled property to map to your own/custom managed properties)
- ColumnName (this is just another crawled property created, not specifically used for anything important)
For example, if you create a Managed Metadata Column at the site level called Department, the resulting crawled properties will be ows_Department, ows_taxId_Department, and Department.
In Summary
It probably makes sense to summarize it all for you in one section, so here it is:
- All list/library columns have the crawled property created that starts with the prefix ows_
- All list/library column types, except for managed metadata type, have crawled properties created that are not mapped to managed properties. Those mappings have to be done manually.
- List/Library columns of managed metadata type (those created from Term Store) have an additional crawled property created with the prefix ows_taxID_ that is automatically mapped to the managed property
- All Site column types, except for managed metadata types, have 2 crawled properties created. One that starts with the prefix ows_ and another property that begins with ows_q_XXXX_, where XXXX is a 4-letter code that depends on the column type. For example: TEXT for text columns, CHCS for Choice columns, DATE for Date columns, etc.
- All Site column types of managed property type (those created from Term Store), have 2 crawled properties created. One that starts with the prefix ows_ and another property that begins with ows_taxID_
- All Site column types have crawled properties created that are automatically mapped to managed properties.
- When mapping crawled property to a managed property, always map to the crawled property that starts with the prefix ows_. Never map properties that begin with any other prefix (i.e., ows_q_CHCS_ or ows_taxID_), as those are already mapped automatically by SharePoint.