2010-01-04 6 views
1

J'utilise le WCMS de Sitecore et j'ai un code C# qui utilise Lucene.net pour rechercher un index basé sur certains critères. J'utilise la classe IndexSearcher comme suit:Lucene.net IndexSearcher.search aucun résultat

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

Ce code fonctionne correctement si les résultats sont renvoyés. Cependant, si "hits" n'a aucun résultat, hits.length() renvoie 1 même s'il est logique qu'il renvoie 0. Est-ce que quelqu'un sait comment je peux dire si la requête n'a donné aucun résultat?

+0

Quelles sont les données renvoyées dans les résultats en l'absence de résultats? – danben

+0

Strange - length() devrait être 0, et vaut 0 dans l'implémentation Java de Lucene. On dirait un Lucene.Net ou un bug WCMS ... Je le signalerais. –

+0

Oui, plus je regarde ça, je vais appeler ça un bug de Sitecore. Il semble que Lucene retourne quelque chose (bien que ce ne soit pas le cas) et quand Sitecore essaie de l'évaluer, c'est null. J'ai aussi posté de l'aide sur les forums de Sitecore et je vais poster ici si je trouve quelque chose. – Kyle

Répondre

2

Le code de référence de Sitecore prévoit ce comportement. Reference

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

Il pourrait y avoir un certain nombre de raisons pour lesquelles vous obtenez des résultats de retour, mais pas les se résolvaient par le résolveur de l'article. L'élément indexé pourrait être dans une autre base de données, il pourrait être indisponible pour l'utilisateur actuel, il pourrait être disponible dans une langue différente de la langue du contexte actuel - étant le plus commun.

Je suggère que vous obteniez l'ID du "résultat fantôme" que vous obtenez, et que vous le cherchiez dans le client Sitecore, voyez de quoi il s'agit. Pourrait jeter un peu plus de lumière sur les questions.

+0

Une autre raison pour laquelle je n'aime pas Sitecore. Merci pour l'aide. J'ai essayé de rechercher le "résultat fantôme" et il n'a renvoyé aucun résultat lorsqu'il s'est connecté en tant qu'administrateur dans le client Sitecore. – Kyle

Questions connexes