Я хочу, чтобы пользователь просматривал все столбцы таблицы для набора фраз, определенных в текстовом поле (разделенные термины с пробелом). Итак, первое, что пришло в голову, - найти способ в SQL, чтобы объединить все столбцы и просто использовать оператор LIKE (для каждой фразы) в этом результате. Другое решение, о котором я думал, это написать алгоритм, который выполняет поиск всех фраз и сопоставляет их со всеми столбцами. Так что я в конечном итоге со следующим:Согласование всех столбцов со всеми поисковыми фразами
String [] columns = {"col1", "col2", "col3", "col4"};
String [] phrases = textBox.Text.Split(' ');
Я тогда взял все возможные комбинации столбцов и фраз, и положить, что в где-п-формате SQL, а затем результат был
"(col1 LIKE '%prase1%' AND col1 LIKE '%phrase2%') OR
(col1 LIKE '%phrase1%' AND col2 LIKE '%phrase2%') OR
(col1 LIKE '%phrase2%' AND col2 LIKE '%phrase1%') OR
(col2 LIKE '%phrase1%' AND col3 LIKE '%phrase2%')"
выше всего лишь пример фрагмент кода выхода, количество условий, создаваемых в этом Алгоритм Построения измеряется
conditions=columns^(phrases+1)
Так я заметил, что наличие 2 море rch-фразы могут по-прежнему давать хорошую производительность, но более того, безусловно, резко снизит производительность.
Какова наилучшая практика при поиске всех столбцов для одних и тех же данных?
Насколько велика таблица, которую вы собираетесь искать? все поля столбцов столбцов? и вам нужно беспокоиться о чувствительности к регистру? –
В таблице всего около 500 строк. Все столбцы - это текст, за исключением столбца «цена». Мы создали веб-искателя и ограничили его одним доменом для получения данных обо всех продуктах. Я не беспокоюсь о чувствительности к регистру. – Edwin
Вы должны искать [Полнотекстовый поиск] (http://msdn.microsoft.com/en-us/library/ms142571.aspx) – VahidNaderi