Wenn Sie SolrSharp verwenden, werden negative Abfragen nicht unterstützt.
Sie müssen QueryParameter.cs ändern (Erstellen Sie einen neuen Parameter)
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; }
}
Und in QueryParameterCollection.cs Klasse, die ToString() überschreiben, sieht, wenn der negative Parameter wahr ist
arQ[x] = (qp.NegativeQuery ? "-(" : "(") + qp.ToString() + ")" + (qp.Boost != 1 ? "^" + qp.Boost.ToString() : "");
Wenn Sie den Parameter Creator aufrufen, wenn es ein negativer Wert ist. Einfacher Wechsel der propertie
List<QueryParameter> QueryParameters = new List<QueryParameter>();
QueryParameters.Add(new QueryParameter("PartnerList", "[* TO *]", ParameterJoin.AND, true));
Obwohl die SolrQuerySyntax-Seite sagt -id: [* TO *], nur -id: ["" TO *] arbeitete für mich auf solr 1.4. –
Funktioniert '' q = -id: * 'auch nicht? – user2043553
@ user2043553 Nein, wenn Sie '? Q = -id: *' Sie erhalten 'Kann nicht analysieren '-q: *': '*' oder '?' nicht erlaubt als erstes Zeichen in WildcardQuery' –