sintaxis query string lucene indexing sitecore field

string - sintaxis - Sitecore+Lucene Search FieldQuery con una cadena vacía



query lucene (1)

Estoy creando un Sitecore.Ecommerce.Search.Query usando objetos FieldQuery. Estoy convirtiendo la consulta de Sitecore a Lucene.Net.Search.Query utilizando la clase LuceneQueryBuilder. Todo con la consulta funciona bien, excepto en los campos en los que trato de hacer coincidir una cadena vacía.

Entonces ... esto funciona:

new FieldQuery(FieldName, "1", MatchVariant.NotEquals)

pero esto no:

new FieldQuery(FieldName, string.Empty, MatchVariant.NotEquals)

También he reflexionado tanto a través del ensamblado de Sitecore.Ecommerce como del ensamblado de Lucene.Net, pero no he encontrado ningún problema obvio. Pero, cuando miro el Término que se crea y usa en la consulta de Lucene, se ve así:

-Nombre del campo:

que creo que es incorrecto ... pero tal vez es correcto y simplemente no tengo configurados los índices de campo correctos ... No estoy seguro de ser honesto.

Cualquier ayuda es muy apreciada.

¡Gracias!


Lucene realmente no admite la búsqueda de valores nulos / vacíos. No hay nada indexado para que encuentre, después de todo. Lucene utiliza un índice invertido , lo que hace que ciertos tipos de consultas, incluidas las consultas de negación pura y la búsqueda de nulos, sean difíciles o incluso imposibles.

Si necesita buscar documentos en los que ciertos campos son nulos, debe almacenar un valor predeterminado en el campo (por ejemplo, "NULO") que puede buscar.

Dicho eso, podrías crear

new RangeQuery(FieldName, null, null, true, true);

Que construye una consulta de rango con límites superiores e inferiores abiertos, por lo que coincide con cualquier cosa que tenga un valor.

No es una buena manera de hacerlo, pero tampoco es una consulta con solo una negación.