Sitecore搜索命中量为null



我正在运行以下代码

IQueryable<customSearchResultItem> query = context.GetQueryable<customSearchResultItem>().Where(CombinPredicates);
var hits = query.GetResults().Hits;
Sitecore.Diagnostics.Log.Info("search query hits:" + hits.Count(), context.Index);
foreach (var item in hits)
{
     string builder = string.Empty;
     try
     {
        string docitemid = item.Document.ItemId.ToString();
        Sitecore.Diagnostics.Log.Info("document itemid:" + docitemid, item);
        Item resultItem = item.Document.GetItem();
     }
     catch (Exception ex)
     {
         Sitecore.Diagnostics.Log.Info("search error going through hits:" + ex.Message, ex);
         builder += item.Document.ItemId.ToString() + "n";
         continue;
     }
}

上述实际返回的结果"命中"变量。但是,我得到的零结果呈现到网站的前端。上面的代码是我的调试代码,以查看发生了什么。

随着我回来的命中,我只是循环循环,仅此而已。执行循环并写入日志时,以下2行实际上按预期返回,有效的Sitecore itemID

string docitemid = item.Document.ItemId.ToString();
Sitecore.Diagnostics.Log.Info("document itemid:" + docitemid, item);

但是,以下行

 Item resultItem = item.Document.GetItem();

返回为null

为什么会这样?

进一步复杂化,该代码在一个环境中而不是另一个环境中的实际作品,因此是调试的原因。此外,Sitecore项目都在场,同时既有主机和Web数据库,又在Solr索引

我遇到了一个类似的问题,我在通过舞台Sitecore实例索引的产品(Web)环境项目中搜索。我相信getItem()方法使用 database item id language 版本搜索结果项目,它是从看起来像这样的 _uniqueid 中解析的:

...
 "_uniqueid":"sitecore://stage/{d31b5802-c123-4690-86ff-8566dc896814}?lang=en&ver=1&ndx=my_site_index"
...

因此,就我而言,它找不到Sitecore项目,因为它在 stage 数据库中查看,其中我的sitecore.context.database是 web 一。

我知道这个答案迟到了:-),但我希望它可以帮助碰巧遇到这个问题的其他人。

最新更新