Я работаю над проектом с SQL Server 2008, где, я считаю, поиск в полнотекстовом режиме - лучший способ. Я читал на нем столько, сколько могу, и очень понимаю, что он хотел настроить его для одной таблицы. Однако я не совсем уверен, как это сделать с моим сценарием - представьте себе следующую структуру таблицы:Полностью текстовый поиск SQL Server - отношение «многие ко многим»
Книга
- Id
- Title
- Description
BookAuthor
- BookId
- AuthorId
Автор
- Id
- Name
Как вы можете видеть, база данных содержит таблицу с книгами, и в каждой книге нет ни одного, ни одного автора. Каждый автор также может быть частью ни одного, одного или многих книг, то есть таблицы Book
и Author
имеют отношение «многие ко многим», обрабатываемые со ссылкой на таблицу BookAuthor
.
В этот момент я хочу найти инструмент поиска, чтобы найти соответствующие книги на основе строки поиска, которую предоставляет пользователь. Таким образом, если пользователь вводит в Brown
я хотел бы найти все книги, где либо из следующих столбцов содержит слово Brown
:
Book.Title
Book.Description
Author.Name
В сущности, я хочу результирующее множество книг, в том числе как книгу с названием Brown Bear
и книги, написанные автором Dan Brown
. Если есть какие-то предложения относительно того, как я должен это сделать, я бы очень признателен за ваш вклад!
(как примечание стороны, когда у меня есть эта фильтрующая работа, результат запроса также необходим будет сортировкой и выгружаемыми, обрабатывается с помощью @SortOrder
, @PageIndex
и @PageSize
передавались в хранимую процедуру - но я думаю, что может быть отдельный вопрос после этого!)
Почему вы используете полнотекстовый поиск, это достойное решение здесь? Это похоже на нормальный дизайн databae для меня. – TomTom
Возможный дубликат [Использование полнотекстового поиска в SQL Server 2008 для нескольких таблиц, столбцов] (http://stackoverflow.com/questions/403630/using-full-text-search-in-sql-server-2008-across -multiple-tables-columns) –
@TomTom Поиск «Брауна», как указано выше, является просто упрощенным примером того, что я хочу достичь. Мне нужно найти x количество слов, и использование LIKE не будет работать.В будущем мы также захотим найти строки, которые соответствуют _almost_, и для этого потребуется полнотекстовый поиск (насколько я знаю). – Iskariot