As the SharePoint search indexer does not index content rendered via Javascript on the page, Akumina uses an indexer that will add the rendered page content into the PageData_AK list, which can then be searched. In addition, the contents of the Akumina widgets must be properly indexed by search so that when a content term is found, the result will provide the site user a link to the page(s) on which the content resides, rather than a link to the SharePoint list which holds the content.
Create the List “PageData_AK” on the root site collection
On the Root Site Collection, you will create a custom list called “PageData_AK” with the following columns:
- Name = Html, Column Type = multiline text, PLAIN TEXT
- Name = PageDataSiteId, Column Type = Single line of text
- Name = PageDataTitle, Column Type = Single line of text
- Edit the column “Title” and set “Enforce unique values”
For Multilingual sites only, the following additional columns are required:
- Name = AkId, Column Type = Number, Decimal Places “Automatic”
- Name = AkLanguageId, Column Type = Number, Decimal Places “Automatic”
- Name = AkLanguageCode, Column Type = Single line of text
Create New Manage Properties in the Search Schema
- Navigate to Site Settings, under Site Collection Administration, select “Search Schema”.
- Create the following New Managed Properties
- PageDataSiteId
- PageDataTitle
- AkLanguageId (Only if Multingual is turned ON for this Site)
- For each of the new managed properties, set the properties as:
- Searchable
- Queryable
- Retrievable
Example:
- For “Mappings to crawled properites”, click “Add a Mapping”-only ONE value will be added as a mapping for each New Managed Property.
- For PageDataSiteID:
- Find – PageDataSiteId – select – ows_PageDataSiteId – click OK
- For PageDataTitle:
- Find – PageDataTitle – select – ows_PageDataTitle – click OK
- For AkLanguageId (if multilingual enabled site):
- Find – AKLanguageId – select- ows_AkLanguageId– click OK
- For PageDataSiteID:
Example:
- Click OK at the bottom of the page to complete the Managed Property definition.
Verify PageData_AK List has items
On the root of the site collection, navigate to the list “PageData_AK”, and verify that there is content in this list. Content gets added to this list by visiting site pages, so if there is no content try navigating around the site and then checking the list again.
ReIndex List PageData_AK
On the root of the site collection, navigate to the settings for the list “PageData_AK.
- On the settings page click on “Advanced settings”.
- Scroll down the page and select “Reindex List”
Excluding Pages from Search
It is possible to exclude entire pages from being indexed by the Akumina Framework. This is done via the Search Page Exclusion List property in the configuration. This is a list of the pages which you want to EXCLUDE from the search results. A page listed here will not be crawled by the search engine. Pages are separated by commas and can use a relative URL path. The default search, page not found and logout pages are automatically populated in this field. You can add additional pages now or after the site deploy.
This ca be changed via the following actions:
- Login to the App Manager for the current site (or the central site if used).
- Go to Management Apps -> Site Creator
- Select Digital Workplace Core Site from the site dropdown
- Select Update Configuration Settings from the Action options
- Add or update the values in the Search Page Exclusion List property, then update the configuration.
Excluding Certain Content from Search
The Akumina Foundation Site uses SharePoint for site search. There are 2 places where site search is used:
- The Typeahead in the upper right of the site
- The Search results page located at [site collection url]/Pages/Search.aspx
It is possible to exclude portions (widget instances) on any page from this index process, as this allows for use cases such as the following:
- Do not index the main menu or footer
- Do not index user specific content, such as a list of tasks.
Content exclusion can be done in 2 ways:
- Attach the class aksearchexclude to an element; that element and its children will be excluded. Example:
- <div class=”aksearchexclude”>
- Adding a formatted comment; content between will be excluded.
For the formatted comment, the widget instance code that is entered into the Content Editor web part must be surrounded with the following tags. When the indexer is run, the content between the tags will be left out.
<!-- aksearchexclude:start -->
[Widget instance code here]
<!-- aksearchexclude:end -->
<!-- aksearchexclude:start -->
, ensure the spaces and dashes are correct. Example:
The comment method can also be used directly in the view instead of the web part.
Example:
Adding additional fields in the indexer
It is possible via a callback to modify or add in additional fields to the search indexer. For example, you have another field, PageCategory, in the PageData_AK list, where you want to capture additional data for the search. Using the function AkSearchExclusionCallback you can modify the data that gets entered into the list.
window.AkSearchExclusionCallback = function(model, currentPage){
// find a value in the page
var pageCategory = $(‘.someclass’).val();// add a new field; this property name should match the list field name exactly
model.PageCategory = pageCategory;// modify the html to be indexed.
model.Html = model.Html + ” some additional text”;
// Single Taxonomy Example
// In actual usage, you would draw this from somewhere.
var termValue = new SP.Taxonomy.TaxonomyFieldValue();
termValue.set_label(“CORPORATE”);
termValue.set_termGuid(“1f164abf-d4cc-4d51-8f06-32b7f72177f1”);
termValue.set_wssId(-1);
model.PageKeywords = termValue;return model;
}