c# lucene sitecore

c# - ¿Podemos asignar más de una ID de plantilla en templateId(como hacemos en relatedId), mientras buscamos con Lucene?



sitecore (2)

Además de lo que dijo Mark, esto se puede lograr usando la siguiente función:

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); }

Tengo cinco casillas de verificación

  • Busca todo
  • Plantilla 1
  • Plantilla 2
  • Plantilla 3
  • Plantilla 4

Si el usuario selecciona Search All , simplemente podemos pasar el nombre del índice y obtener el resultado, si el usuario selecciona una casilla de verificación específica de la plantilla, simplemente podemos hacerlo pasando el nombre de la plantilla, pero si hay alguna de dos plantillas específicas (o puede tres) son revisados, entonces?

¿Podemos separar los ID de plantilla?


Es posible que deba cambiar el método en el rastreador de la base de datos avanzada para manejar los GUID de las plantillas pasadas. La clase SearchParam tiene una propiedad llamada TemplateIds que, al ser plural, indica que debe permitir más de uno. Sin embargo, si observa el código, así es como se usa:

templateIds = IdHelper.NormalizeGuid(templateIds);

El método NormalizeGuid() realidad solo devuelve un único GUID . Por lo tanto, le recomiendo que modifique el método ApplyTemplateFilter() aquí para devolver varios GUID de plantillas:

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); }

Así que cambie templateIds = IdHelper.NormalizeGuid(templateIds) para manejar múltiples GUID, quizás dividiendo la entrada en a | obtener cada GUID luego normalizar cada uno de ellos y combinarlos nuevamente a través de | .