2009-11-23 1 views
0

Nous rencontrons un problème où FullTextSqlQuery renvoie uniquement les 100 résultats par défaut lorsque certains critères sont ajoutés dans la clause WHERE. Nous définissons le RowLimit à int.MaxValue, et quand une recherche ouverte est effectuée, nous recevons les résultats maximum. C'est seulement un problème quand on parle de clauses CONTAINS. Quelqu'un d'autre a-t-il déjà vu ce problème? Je n'ai pas été capable de déterrer quoi que ce soit sur Google/Bing.FullTextSqlQuery Paramètre RowLimit par défaut lors de l'ajout de critères WHERE

FullTextSqlQuery kRequest = new FullTextSqlQuery(ServerContext.Current); 
kRequest.KeywordInclusion = KeywordInclusion.AnyKeyword; 
kRequest.ResultTypes = ResultType.RelevantResults; 
kRequest.TrimDuplicates = false; 
kRequest.RowLimit = int.MaxValue; 
kRequest.Timeout = 120000; 
ResultTableCollection resultTbls = kRequest.Execute(); 

Code de requête:

string query = "SELECT Title, Path, Facility, OwnerDepartment, 
    FacilityActiveDate, FacilityInactiveDate, ScheduledReviewDate, DocID, 
    Version FROM SCOPE() WHERE "; 
query += "Path like '%" + site.Url + "%'"; 

// when it hits the else statement is an example of when it will only 
// return 100 results 
if (FacilitySelectedIndex == 1) 
    { 
    query += " AND Facility IS NOT NULL"; 
    } 
else 
    { 
    query += " AND CONTAINS(Facility, '\"*" + FacilityShortName.Trim() + "*\"')"; 
    queryText.Add("Facility=" + FacilityShortName); 
    } 
} 

Répondre

2

Si je me souviens bien, la RowLimit valeur maximale est en fait inférieur à Int.MaxValue, seulement il ne vous dira pas que. Essayez de définir le RowLimit à un grand nombre arbitraire qui est toujours plus petit que int.MaxValue, tel que 99999

+0

J'étais sous l'impression qui a été corrigé dans SP1. Je dirai que l'avoir à int.MaxValue est probablement exagéré (je ne peux pas prendre le crédit pour le code original), mais il n'y a aucun problème quand les critères ne sont pas utilisés. Une recherche ouverte dans ce système rapportera actuellement environ 700 documents par 'installation'. Dès qu'un 'facility' est ajouté dans l'instruction else montrée ci-dessus, il retournera exactement 100. –

+0

zincorp - Je dois admettre que je suis confus quant à pourquoi, mais en changeant RowLimit à une valeur je l'ai corrigé. Merci de votre aide. –

+0

Dans SharePoint, il n'y a pas de "pourquoi" ... seulement "bwuhhh?" – zincorp

Questions connexes