/*Создаем тестовую среду
WINXP(SP3)+SQL SERVER2005(SP3)*/
если object_id('tb') не равен нулю
опустить стол ТБ
идти
создать таблицу тб
(id intidentity(1,1),
заголовок варчар(200),
подробно varchar(1000),
ограничение pk_id первичного ключа(id) – требуется при построении полнотекстового индекса
)
вставить в тб
выберите «Рокетс» собираются подписать новичка-шутера». Сообщается, что переговоры по контракту между Будингером и «Рокетс» были завершены вчера, и Будингер получит тот же контракт, что и Тейлор. Ранее СМИ сообщили, что контракт Тейлора рассчитан на четыре года и стоит в общей сложности 10 000 долларов США, из которых первые два года являются гарантированными контрактами. Ожидается, что Будингер официально объявит о своем переходе в «Рокетс» в ближайшие несколько дней. '
объединить все
select «Выяснилось, что Уивер подписал контракт с греческим гигантом», «По данным International Basketball Network, бывший игрок «Рокетс» Ван Уивер подписал контракт с греческим гигантом «Олимпиакос». Уивер получил двухлетний контракт на сумму 10 000 долларов. '
объединить все
select «Шпоры потратили много денег на борьбу с Лейкерс», «Шпоры» добавили в команду несколько генералов в течение этого летнего межсезонья. Главный тренер Грег Вич недавно сообщил в интервью Yahoo Sports, что «Шпоры» без колебаний заплатили. налог на роскошь, чтобы построить роскошное здание. Состав создан для борьбы с «Лейкерс» и борьбы за пятый чемпионат. '
объединить все
выберите «Уоллес никогда не думал об уходе из Мотор Сити», «Бен Уоллес согласился вернуться в «Детройт Пистонс» и подписал с «Пистонс» контракт на 10 000 долларов в год с минимальной зарплатой ветерана», — сообщает обозреватель «Дейли Геральд» Мик. МакГроу рассказал, что игрок внутренней защиты, который доминировал в НБА в то время, даже не думал об уходе из «Пистонс». '
объединить все
выберите «Миллер так хорош в борьбе за любовь и в преследовании своей жены», «Для тех «задних», кто никогда не видел, как Реджи Миллер создавал «Время Миллера» с «Пэйсерс», как нам представить эту бывшую звезду НБА? Может ли все начаться с баннера, протянутого самолетом над пляжем Малибу в Лос-Анджелесе позавчера? Боюсь, ни один родитель не захочет этого сделать. '
объединить все
выберите «Яо Мин: Я не относился к Шанхаю как к инвестиционному проекту, но был рад вести бизнес как хороший человек». «Яо Ми» сказала: Яо Мин, у которого нет недостатка в рекламных эффектах, приобрел Шанхайский восточный баскетбольный клуб, находящийся на грани исчезновения, показывает, что он очень хочет зарабатывать на жизнь бывшему. Родительская команда что-то делает. '
объединить все
выберите «Рокетс» проиграли «Уизардс» и завершили годовой рекорд», «Комбинация Яо-Май была в плохой форме в этой кампании. Яо Мин забил подбор и блокировал удар, а МакГрэйди сделал подбор и результативную передачу. Они оба объединились и сделали отскок. Джеймисон сделал две передачи и два блок-шота. '
Шаг 1. Включите полнотекстовое индексирование базы данных.
sp_fulltext_database Enable — включить полнотекстовое индексирование базы данных.
идти
Шаг 2. Создайте полнотекстовый каталог.
создать полнотекстовый каталог tb_fulltext
по пути N'D:Program FilesMicrosoft SQL Server2005MSSQL.1MSSQLFTData'
with Accent_sensitivity =on — различать акценты
авторизация dbo;-владелец полнотекстового каталога
Шаг 3. Создайте полнотекстовый индекс
создать полнотекстовый индекс на tb
(название, деталь)
ключевой индекс pk_id — укажите столбец индекса. Чтобы повысить производительность, лучше всего использовать кластеризованный индекс.
на tb_fulltext
с помощью Change_tracking auto — автоматически обновлять полнотекстовый индекс при изменении данных в связанной таблице.
Шаг 4. Пример запроса:
выберите * из таблицы
где содержит((название,деталь),'Яо Мин')
Синтаксис запроса:
1. Поиск по конкретным словам: содержит(деталь, «Яо Мин»)
2. Найдите конкретную фразу: используйте «», чтобы заключить фразу в двойные кавычки, contains(подробнее, «Яо Мин Шанхай»)
3. Поиск слов и фраз из нескольких столбцов: contains((title,detail),'Yao Ming Shanghai')
4. Найдите слова или фразы, начинающиеся с указанного текста: contains(detail,'"Яо Мин*"')
Если текст и звездочка не заключены в двойные кавычки, полнотекстовый поиск будет рассматривать звездочку как один символ. Если поиск ведется по фразе, каждое слово внутри фразы считается префиксом. contains(detail,'"Yao Ming Shanghai*"') вернет результаты, в которых первое слово начинается с Яо Мин, а второе слово начинается с Шанхай
5. Найдите варианты конкретных слов: contains(detail,'formsof(flectional,ride)')
Вернет в таблицу строки, содержащие аттракционы, аттракционы, катание, катание.
6. Найдите слова или фразы, близкие к другому слову или фразе: contains(подробнее, «Яо Мин недалеко от Шанхая»)
7. Слова или фразы, в которых используются взвешенные значения: содержит(описание,'isabout(производительный вес(.8),комфортный вес(.4),гладкий вес(.2))')
Вес присваивает каждому слову или фразе весовое значение от 0,0 до 1,0.
8. Используйте несколько условий поиска: содержит(деталь, «Яо Мин» или «Шанхай»)
содержит(подробно,'"Яо Мин" и "Шанхай"')
содержит(подробно,'"Яо Мин" а не "Шанхай"')
9. Вы также можете использовать переменные в содержании
10. Поиск синонимов содержит(название,'формы(тезаурус,он)')
【тест】
В приведенном выше примере выполните
выберите * из таблицы
где содержится (название, «Шанхай»)
результат:
идентификатор заголовка подробно
6 Яо Мин: Он не рассматривал Шанхай как инвестиционный проект. Он был счастлив быть хорошим бизнесменом и стал хорошим человеком. «Яо Ми» сказал: Яо Мин, у которого нет недостатка в рекламном эффекте, приобрел Shanghai Oriental. Баскетбольный клуб, находившийся на грани исчезновения, показывает, что он действительно хочет что-то сделать для своей бывшей родительской команды.
Но выполните:
выберите * из таблицы
где содержит(название,'上')
Результатом является пустое множество.
Причина: при выполнении запроса полнотекстового индекса «上» является мешающим словом в упрощенном китайском языке, то есть оно будет игнорироваться во время запроса, кроме того, при создании полнотекстового индекса фраза обычно используется как; элемент индекса вместо одного слова.
Если вы хотите выполнить этот запрос еще раз и узнать результаты первого запроса, вы можете изменить тезаурус полнотекстового индекса.
Путь, по которому существуют файлы пропускаемых слов и синонимов:
D:Program FilesMicrosoft SQL Server2005MSSQL.1MSSQLFTData Каждое имя файла должно быть легко идентифицируемым.
Вот краткое введение в модификацию тезауруса:
1. С помощью Блокнота откройте tschs.xml — библиотеку синонимов упрощенного китайского языка.
<XML ID="Тезаурус Microsoft Search">
<!-- Закомментировано
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitivity>0</diacritics_sensitivity>
<расширение>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</расширение>
<замена>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</замена>
<расширение>
<sub>запустить</sub>
<sub>пробежка</sub>
</расширение>
</тезаурус>
-->
</XML>
объяснять:
<замена>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</замена>
является словом-заменителем, то есть при запросе W2K оно будет автоматически заменено на слово Windows 2000 для запроса.
<расширение>
<sub>запустить</sub>
<sub>пробежка</sub>
</расширение>
Это библиотека синонимов, то есть при запросе run также будет искаться jog.
В этом примере добавьте:
<расширение>
<sub>Вверх</sub>
<sub>Шанхай</sub>
</расширение>
2. Удалите строку комментария, начинающуюся в конце:
<!-- Закомментировано
-->
3. Конечный результат:
<XML ID="Тезаурус Microsoft Search">
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitivity>0</diacritics_sensitivity>
<расширение>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</расширение>
<замена>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</замена>
<расширение>
<sub>запустить</sub>
<sub>пробежка</sub>
</расширение>
<расширение>
<sub>Вверх</sub>
<sub>Шанхай</sub>
</расширение>
</тезаурус>
</XML>
3. Выполните оператор запроса:
выберите * из таблицы
где содержит(название,'формы(тезаурус,он)')
Вы можете видеть, что результаты запроса такие же, как и у contains(title,'Shanghai')