#sql-server #search
Вопрос:
Что бы вы порекомендовали для поиска по термину в таблице sql server (столбец varchar(max))?
Допустим, как на ebay, если вы ищете «Совершенно новая игра wii», вы получите такие результаты, как «Совершенно новая игра Nintendo Wii Fit комплект балансовой доски», «СОВЕРШЕННО НОВАЯ ИГРА WII Fit (Wii) БАЛАНСОВАЯ ДОСКА».
Я думаю, что он в основном ищет каждое слово и возвращает те, которые содержат все слова, что бы вы порекомендовали?
Ответ №1:
Вы ищете полнотекстовую индексацию, она позволяет выполнять более сложные запросы, чем регулярные выражения или тому подобное.
Ознакомьтесь с этой статьей для краткого введения, инструкции предназначены для SQL Server 2000, где его немного сложнее настроить, чем в 2005 или 2008 годах.
Соответствующая цитата:
С помощью полнотекстового поиска вы можете выполнять множество других типов поиска: * Два слова рядом друг с другом * Любое слово, производное от определенного корня (например, run, ran или running) * Несколько слов с различными весами * Слово или фраза, близкие к поисковому слову или фразе
Ответ №2:
Зависит от того, что вы пытаетесь сделать. Для простого поиска вы могли бы просто сделать select * from table where field like '%word%'
. Но если это какая-то функция приложения, вы хотите изучить полное приложение для поиска tet. Он может хранить слова, которые отображаются в этом поле в качестве индексов, а затем выполнять поиск по этим словам вместо использования этого поля.