в настоящее время ваш код выглядит так:
blockquote>if(command_line[0] == '!') { <recall> } else if(strcmp(command_line, "exit") == 0) { <exit> } else if(strcmp(command_line, "history") == 0) { <historic> } else if(strncmp(command_line, "parse", 5) == 0) { <parse> } else { <other> }
использование переключателя даст что-то вроде этого:
switch (command_line[0]) { case '!': <recall> break; case 'e': if(strcmp(command_line + 1, "xit") == 0) { <exit> } else { <other> } break case 'h': if(strcmp(command_line + 1, "istory") == 0) { <historic> } else { <other> } break case 'p': if(strncmp(command_line + 1, "arse", 4) == 0) { <parse> break; } // no fallthrough default: { <other> } }
Это менее читабельно, облегчает введение ошибки, если она должна быть изменена, и не оказывает благотворного влияния на скорость, если это то, что вы ожидали
Для меня не делайте этого ... но спросите себя о strcmp , но strncmp в одном случае
Lucene.NET является чрезвычайно быстрым механизмом полнотекстового поиска.
Демонстрационное использование:
Посмотрите Исходный код DotNetKicks, начинающего с codebehind страницы результатов поиска
Xapian является Библиотекой Поисковой системы С открытым исходным кодом с функциями, которые Вы ищете.
Один путь состоял бы в том, чтобы найти искавшее значение во всех таблицах в базе данных. Конечно, этот код может быть изменен, чтобы сфокусироваться на определенных таблицах и столбцах.
Следовать ответу fallen888:
Вы могли создать класс с методом, берущим массив или список поисковых ключевых слов для входа. Создайте запросы LINQ, связанные с каждой таблицей, и например используйте оператор "LIKE" некоторыми способами, объясненными в этом сообщении в блоге для поиска правых столбцов соответствие содержанию. Конечно, это не будет очень оптимизировано, но будет работать на маленькие системы :)
При использовании SQL Server для базы данных затем, можно попробовать полнотекстовый поиск SQL. Я использовал его вполне успешно.
Если Вы хотите что-то действительно масштабируемое, я предполагаю, что необходимо будет создать сначала словарь данных, перечисляя каждую таблицу и каждый столбец в базе данных. Здание такой таблицы может быть полностью автоматизировано.
Вы укажете в этой таблице, какие поля доступны для прямого или мягкого (с подстановочным знаком) поиск.
Вы затем сможете создать некоторый хороший и умный пользовательский интерфейс, где машина сможет найти что код такой как '*823*'
отошлите обоих к 'INV-0823456'
и 'INV-0880823'
номера счетов-фактур, пока поле номера счета-фактуры доступно для мягкого поиска. Пользователю можно было бы даже дать опцию выбрать, какой столбец (столбцы) искать, как сканирующий все номера телефона в базе данных не мог бы всегда иметь смысла.
Вы не должны пытаться индексировать все доступные для поиска столбцы. Стратегия "полного индекса" может стать очень costy в терминах диска volume\server наверху и будет не всегда иметь смысл для редко искавших столбцов. Не волнуйтесь много о который: пользователи не будут возражать против некоторой задержки получения их ответа.
Если Вы хотите одно решение для поиска остановки и хотите иметь поиск, работающий в течение минут над Вашим сайтом или блогом, можно всегда использовать BuildaSearch. BuildaSearch делает пользовательское поисковое создание быстрым и легким. Просто скопируйте и вставьте свой пользовательский код JavaScript и немедленно, у Вас есть полностью функциональный пользовательский поиск, работающий над Вашим веб-сайтом. Самая интересная функция об этом поисковом сервисе - то, что Вы не должны писать одну строку кода и работ ни над какой средой веб-сервера.