Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

Полнотекстовое индексирование таблицы Attributes

Нас интересует поиск как в таблице Products, так и в таблице динамических атрибутов. Поэтому создадим аналогичный индекс для таблицы Attributes:

1. В Enterprise Manager щелкните правой кнопкой мыши на таблице Attributes. Выполните Full-Text Index Table  Define Full-Text Indexing on a Table.

2. Щелкнув на Next, закройте окно краткой справки.

3. Укажите существующий первичный ключ PKAttributes для индекса.

4. Добавьте столбец stringValue в список Added columns.

5. Выберите каталог My Catalog.

6. Щелкните на Next, отказавшись от установки расписания.

7. Щелкните на Finish’.

После создания индекса найдите в управляющем объекте Full-Text Catalogs объект My Catalog, щелкните на нем правой кнопкой мыши и выполните Start Population  Full Population.

Построение запроса

Имея список ключевых слов и SQL Server, сконфигурированный на полнотекстовое индексирование, можно сформировать запрос SQL, исполняющий поиск.

Напомним, что требуется проводить поиск по нескольким столбцам представления vProducts? Для этого придется отдельно запросить каждый столбец и проверить наличие в нем ключевого слова, а затем объединить полученные результаты оператором or. Для поиска ключевых слов воспользуемся оператором like, чтобы выявить слова, являющиеся частью длинной фразы.

 

Реализация поиска в методе Search

1. В конец метода Search модуля класса Search добавьте код:

 Полнотекстовое индексирование таблицы Attributes

 Полнотекстовое индексирование таблицы Attributes

 

 

Описание работы

Без необходимости мы не предпринимаем никаких действий. В данном случае можно проверить, нужно ли что-нибудь делать по количеству найденных ключевых слов. При неудачном запросе возвращается значение Nothing:

 Полнотекстовое индексирование таблицы Attributes

Если найдены какие-нибудь ключевые слова, нужно начать цикл проверок по каждому интересующему нас столбцу (ранее мы выбрали необходимые столбцы — название товара, сведения о нем и его описание):

 Полнотекстовое индексирование таблицы Attributes

Для каждого из этих столбцов проводим итерацию по ключевым словам массива, добавляя их в конец условия where. Перед вторым, третьим и четвертым столбцом добавляем оператор OR или AND, в зависимости от значения параметра UseOr:

 Полнотекстовое индексирование таблицы Attributes

Полнотекстовое индексирование таблицы Attributes

 

Предположим, что выполняется поиск по слову Carezza. Если столбец Details данной строки Products содержит это ключевое слово либо оно есть в поле Description, то строка удовлетворяет условию поиска и будет возвращена.

Небольшое замечание о полнотекстовом поиске SQL. Запрос у представления столбцов, входящих в полнотекстовый индекс, приведет в SQL Server к возникновению ошибки, заключающейся в том, что столбец "таблицы" (полнотекстовый индекс неправильно понимает представление) не является полнотекстовым индексом. Избежать ошибки позволит запрос непосредственно к таблице Products. Затем нужно передать прошедшие проверку строки в отдельный запрос, который выполнит работу представления vProducts по интересующим нас данным. Для этого используйте условие SELECT.. .IN.

Для запуска метода Search со строкой поиска Carezza условие WHERE, которое будет возвращено через параметр Where метода RunQuery, должно иметь вид:

 Полнотекстовое индексирование таблицы Attributes

Сам метод RunQuery использует условие WHERE для формирования оператора SQL:

 Полнотекстовое индексирование таблицы Attributes

 

Читайте так же:
Not found

Нам доверяют

Интернет магазин