Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用Lucene搜索时,我们是否可以在templateId中分配多个模板ID(就像在relatedId中一样)?_C#_Lucene_Sitecore - Fatal编程技术网

C# 在使用Lucene搜索时,我们是否可以在templateId中分配多个模板ID(就像在relatedId中一样)?

C# 在使用Lucene搜索时,我们是否可以在templateId中分配多个模板ID(就像在relatedId中一样)?,c#,lucene,sitecore,C#,Lucene,Sitecore,我有五个复选框 搜索全部 模板1 模板2 模板3 模板4 如果用户选择了Search All,那么我们可以简单地传递索引名并获得结果,如果用户选择了模板特定复选框中的一个,我们也可以简单地传递模板名,但是如果选中了两个模板特定复选框中的任何一个(或者可能是三个),那么 我们是否可以使用管道将模板ID分开?您可能需要更改高级数据库爬虫中的方法,以处理传入的模板的GUID。SearchParam类有一个名为TemplateIds的属性,它的复数表示它应该允许多个属性。但是,如果您查看代码,它的使

我有五个复选框

  • 搜索全部
  • 模板1
  • 模板2
  • 模板3
  • 模板4
如果用户选择了
Search All
,那么我们可以简单地传递索引名并获得结果,如果用户选择了模板特定复选框中的一个,我们也可以简单地传递模板名,但是如果选中了两个模板特定复选框中的任何一个(或者可能是三个),那么


我们是否可以使用管道将模板ID分开?

您可能需要更改高级数据库爬虫中的方法,以处理传入的模板的GUID。
SearchParam
类有一个名为
TemplateIds
的属性,它的复数表示它应该允许多个属性。但是,如果您查看代码,它的使用方式如下:

templateIds = IdHelper.NormalizeGuid(templateIds);
实际上,
NormalizeGuid()
方法。因此,我建议您更改此处的
ApplyTemplateFilter()
方法以返回多个模板GUID:

protected void ApplyTemplateFilter(CombinedQuery query, string templateIds, QueryOccurance occurance)
{
  if (String.IsNullOrEmpty(templateIds)) return;

  templateIds = IdHelper.NormalizeGuid(templateIds);
  var fieldQuery = new FieldQuery(BuiltinFields.Template, templateIds);
  query.Add(fieldQuery, occurance);
}

因此,更改
templateIds=IdHelper.NormalizeGuid(templateIds)
来处理多个GUID,也许可以通过在
处拆分输入来获得每个GUID,然后对其中的每一个进行规范化,并通过

再次组合它们,Mark说,使用以下函数可以实现这一点:

protected void ApplyTemplateFilter(CombinedQuery query, string templateIds)
{
  if (String.IsNullOrEmpty(templateIds)) return;
  var fieldQuery = new CombinedQuery();
  var values = IdHelper.ParseId(templateIds);
  foreach (var value in values.Where(ID.IsID))
  {
    AddFieldValueClause(fieldQuery, BuiltinFields.Template, value, QueryOccurance.Should);
  }
  query.Add(fieldQuery, QueryOccurance.Must);
}