Frage

Ich bin mit dem Sitecore WCMS und ein Stück von C # -Code, die Lucene.net verwendet einen Index nach bestimmten Kriterien zu suchen. Ich verwende die IndexSearcher Klasse wie folgt:

Database webDB = Sitecore.Context.Database;
Sitecore.Data.Indexing.Index index = webDB.Indexes["CampusNewsIndex"];
IndexSearcher indexSearcher = index.GetSearcher(webDB);
BooleanQuery completeQuery = new BooleanQuery();
// build completeQuery
Hits hits = indexSearcher.Search(completeQuery, sort);

for (int i = 0; i < hits.length(); i++)
{
    returnItems[i] = Sitecore.Data.Indexing.Index.GetItem(hits.Doc(i), Sitecore.Context.Database);
}

Dieser Code funktioniert gut, wenn die Ergebnisse zurückgegeben werden. Wenn jedoch „Hits“ keine Ergebnisse haben, hits.length () gibt 1, obwohl es logisch sinnvoll für sie 0 zurück Weiß jemand, wie ich sagen kann, ob die Abfrage keine Ergebnisse zurückgegeben?

War es hilfreich?

Lösung

Sitecores eigener Referenzcode erwartet tatsächlich dieses Verhalten. Referenz

Item item = Index.GetItem(hits.Doc(i), db);
if (item != null)

Es könnte eine beliebige Anzahl von Gründen, warum Sie die Ergebnisse zurück bekommen, aber sie nicht über den Punkt Resolver aufgelöst zu werden. Das indizierte Element in einer anderen Datenbank sein könnte, könnte es für die aktuellen Benutzer nicht zur Verfügung steht, könnte es in einer anderen Sprache als die aktuelle Kontext Sprache zur Verfügung steht - die häufigsten ist.

Ich schlage vor, Sie halten die ID der „Geister Ergebnis“ erhalten Sie bekommen, und für sie innerhalb des Sitecore-Client sucht, sehen, was es ist. Könnte etwas mehr Licht auf Fragen vergießen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top