Ограничение результатов в запросах каталога индекса IIS - PullRequest
0 голосов
/ 11 сентября 2009

Я использую службу индексов 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;

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

1 Ответ

0 голосов
/ 04 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...