一部のフィールドで、検索結果の並べ替えが遅くなるか、失敗する場合がある


説明

本事象は、並べ替え基準として使用されるフィールドの構成が「Field Map」に含まれていない場合に発生します。
事象が発生した場合、ログ ファイルに次のエラーが記録される可能性があります。

24172 2018:03:09 11:43:05 WARN Results endpoint exception
Exception: System.NullReferenceException
Message: Object reference not set to an instance of an object.
Source: Sitecore.ContentSearch
   at Sitecore.ContentSearch.Utilities.QueryBuilder.ResolveFieldTypeByName(String fieldName, IProviderSearchContext context)
   at Sitecore.ContentSearch.Utilities.QueryBuilder.ApplySorting[T](IProviderSearchContext context, IQueryable`1 searchResultItems, IEnumerable`1 searchModels)
   at Sitecore.ContentSearch.Utilities.QueryBuilder.CreateQuery[T](IProviderSearchContext context, IEnumerable`1 searchStringModel, Item startLocationItem, IEnumerable`1 additionalContexts)
   at Sitecore.ContentSearch.Utilities.QueryBuilder.CreateQuery[T](IProviderSearchContext context, IEnumerable`1 searchStringModel)
   at Sitecore.XA.Foundation.Search.Services.SearchService.GetQuery(String query, String scope, String language, Coordinates center, String siteName, String& indexName)
   at Sitecore.XA.Feature.Search.Controllers.SearchController.GetResults(String v, String q, String s, String l, String g, String o, Int32 e, Int32 p, String sig, String site)

解決策

本事象を解決するには、並べ替えに使用するフィールドを「Field Map」に追加します。
例:

<fieldMap type="Sitecore.ContentSearch.SolrProvider.SolrFieldMap, Sitecore.ContentSearch.SolrProvider">

  <fieldNames hint="raw:AddFieldByFieldName">

    <field fieldName="criterion" returnType="string" />
  ...
</fieldNames>
...
</fieldMap>