2009-09-11 2 views
0

Я использую службу индексирования IIS для поиска функции поиска на своем веб-сайте. Я использовал следующий код для создания запроса для результатовОграничение результатов в запросе каталога индекса IIS

string query = String.Format(@"SELECT Rank, VPath, DocTitle, Filename, Characterization, Write FROM SCOPE('DEEP TRAVERSAL OF ""{0}""') WHERE NOT CONTAINS(VPath, '""_vti_"" OR "".pdf"" OR "".config"" OR "".js"" OR "".txt""')", "/"); 

     // Conditionally construct the rest of the WHERE clause. 
     string type = "any";//this.cboQueryType.SelectedItem.Value.ToLower(); 
     // string fmt = @" AND (filename NOT LIKE '%.doc') AND (filename NOT LIKE '%.txt') AND (filename NOT LIKE '%.js') AND (filename NOT LIKE '%.pdf') AND (filename NOT LIKE '%.ppt') AND (CONTAINS('{0}') OR CONTAINS(DocTitle, '{0}'))"; 
     string fmt = @" AND (filename NOT LIKE '%.doc') AND (filename NOT LIKE '%.aspx') AND (filename NOT LIKE '%.xml') AND (filename NOT LIKE '%.txt') AND (CONTAINS('{0}') OR CONTAINS(DocTitle, '{0}'))"; 

     // Get the query string and remove all semi-colons, which should stop 
     // attempt to run malicious SQL code. 

     if (type == "all" || type == "any" || type == "boolean") 
     { 
      string[] words = text.Split(' '); 
      int len = words.Length; 
      for (int i = 0; i < len; i++) 
      { 
       string word = words[i]; 
       if (type == "boolean") 
        if (String.Compare(word, "and", true) == 0 || 
         String.Compare(word, "or", true) == 0 || 
         String.Compare(word, "not", true) == 0 || 
         String.Compare(word, "near", true) == 0) 
         continue; 

       words[i] = String.Format(@"""{0}""", word); 
       if (i < len - 1) 
       { 
        if (type == "all") words[i] += " AND"; 
        else if (type == "any") words[i] += " OR"; 
       } 
      } 

      query += String.Format(fmt, String.Join(" ", words)); 
     } 
     else if (type == "exact") 
     { 
      query += String.Format(fmt, text); 
     } 
     else if (type == "natural") 
     { 
      query += String.Format(" AND FREETEXT('{0}')", text); 
     } 

     // Sort the results. 
     query += String.Format(" ORDER BY {0} {1}","Rank","DESC"); 


     //Trace.Write("Query", query); 
     return query; 

Это работает нормально для me.Now я хочу, чтобы уменьшить количество результатов .Как это сделать? Я ищу что-то вроде SELECT top 15 от клиента. Мне нужно всего 10 записей для моего результата поискового запроса. Есть предположения ????

ответ

0

Вы можете использовать собственность MaxRecords.