tutorial puerto instalar ejemplos crear configurar solr lucene

puerto - ¿Cómo consultar SOLR para campos vacíos?



solr tutorial (7)

De acuerdo con SolrQuerySyntax , puede usar q=-id:[* TO *] .

Tengo un gran índice de solr, y he notado que algunos campos no se actualizan correctamente (el índice es dinámico).

Esto ha resultado en que algunos campos tengan un campo "id" vacío.

He intentado estas consultas, pero no funcionaron:

id:'''' id:NULL id:null id:"" id: id:['''' TO *]

¿Hay alguna manera de consultar los campos vacíos?

Gracias


Prueba esto:

?q=-id:["" TO *]


Si está utilizando SolrSharp, no admite consultas negativas.

Necesita cambiar QueryParameter.cs (Crear un nuevo parámetro)

private bool _negativeQuery = false; public QueryParameter(string field, string value, ParameterJoin parameterJoin = ParameterJoin.AND, bool negativeQuery = false) { this._field = field; this._value = value.Trim(); this._parameterJoin = parameterJoin; this._negativeQuery = negativeQuery; } public bool NegativeQuery { get { return _negativeQuery; } set { _negativeQuery = value; } }

Y en la clase QueryParameterCollection.cs, ToString () anula, busca si el parámetro Negativo es verdadero

arQ[x] = (qp.NegativeQuery ? "-(" : "(") + qp.ToString() + ")" + (qp.Boost != 1 ? "^" + qp.Boost.ToString() : "");

Cuando llamas al creador del parámetro, si es un valor negativo. Simple cambio de las propiedades

List<QueryParameter> QueryParameters = new List<QueryParameter>(); QueryParameters.Add(new QueryParameter("PartnerList", "[* TO *]", ParameterJoin.AND, true));


Si tiene un índice grande, debe usar un valor predeterminado

<field ... default="EMPTY" />

y luego consulta para este valor predeterminado. Esto es mucho más eficiente que q = -id: ["" TO *]


También puedes usarlo así.

fq=!id:['''' TO *]


Una advertencia! Si desea redactar esto mediante O o Y, no puede usarlo de esta forma:

-myfield:*

pero debes usar

(*:* NOT myfield:*)

Esta forma es perfectamente composable. Aparentemente SOLR expandirá la primera forma a la segunda, pero solo cuando sea un nodo superior. Espero que esto te ahorre algo de tiempo!


puedes hacerlo con la consulta de filtro q = *: * & fq = -id: *