我对搜索上下文有一些奇怪的问题。 在d.Path.Starts存在的情况下,我正在查询来自查询的结果。
我看到路径字段包含完整路径并且它在索引中是正确的/我想找到字段女巫是从某个sitecore路径开始,但没有运气。 我在后端使用Solr。
string path = "/sitecore/blabla"; //just for example
var contextIndex = ContentSearchManager.GetIndex("sitecore_master_index");
using (var context = contextIndex.CreateSearchContext())
{
var results = context.GetQueryable<PackageDateDocument>()
.Where(d => (d.TemplateName == _templatename) && (d.Language == "en") && (d.Path.StartsWith(path)));
return results;
}
我的查询有什么问题?
更新1: 我的Solr版本是4.4.0 好像它与/ char有关 如果使用Solr UI,则下一个查询适用于add / chars
"q": "_fullpath:\\/sitecore\\/content\\/system\\/balabla* && _language: \"en\" && _templatename: \"My Template\"",
答案 0 :(得分:1)
好的,Sitecore支持告诉我这个问题已在Sitecore 8 SP3中修复))) 这是solr string里面的一些问题 他们建议在查询中使用项目ID和路径字段。
var results = context.GetQueryable<PackageDateDocument>()
.Where(d => (d.TemplateName == _templatename)
&& (d.Language == rootTour.Language.Name) && d.Paths.Contains(item.ID));
答案 1 :(得分:0)
&#34; /&#34; char应该在您的查询中转义。这应该已经在最新的Sitecore版本中得到解决。 对于早期版本,建议使用包含路径。