Как я создаю поисковый механизм для своего приложения?

в настоящее время ваш код выглядит так:

  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 в одном случае

6
задан Jonathan Leffler 23 December 2008 в 21:57
поделиться

7 ответов

Lucene.NET является чрезвычайно быстрым механизмом полнотекстового поиска.

Демонстрационное использование:

Посмотрите Исходный код DotNetKicks, начинающего с codebehind страницы результатов поиска

3
ответ дан 17 December 2019 в 00:15
поделиться

Xapian является Библиотекой Поисковой системы С открытым исходным кодом с функциями, которые Вы ищете.

1
ответ дан 17 December 2019 в 00:15
поделиться

Один путь состоял бы в том, чтобы найти искавшее значение во всех таблицах в базе данных. Конечно, этот код может быть изменен, чтобы сфокусироваться на определенных таблицах и столбцах.

1
ответ дан 17 December 2019 в 00:15
поделиться

Следовать ответу fallen888:

Вы могли создать класс с методом, берущим массив или список поисковых ключевых слов для входа. Создайте запросы LINQ, связанные с каждой таблицей, и например используйте оператор "LIKE" некоторыми способами, объясненными в этом сообщении в блоге для поиска правых столбцов соответствие содержанию. Конечно, это не будет очень оптимизировано, но будет работать на маленькие системы :)

0
ответ дан 17 December 2019 в 00:15
поделиться

При использовании SQL Server для базы данных затем, можно попробовать полнотекстовый поиск SQL. Я использовал его вполне успешно.

0
ответ дан 17 December 2019 в 00:15
поделиться

Если Вы хотите что-то действительно масштабируемое, я предполагаю, что необходимо будет создать сначала словарь данных, перечисляя каждую таблицу и каждый столбец в базе данных. Здание такой таблицы может быть полностью автоматизировано.

Вы укажете в этой таблице, какие поля доступны для прямого или мягкого (с подстановочным знаком) поиск.

Вы затем сможете создать некоторый хороший и умный пользовательский интерфейс, где машина сможет найти что код такой как '*823*' отошлите обоих к 'INV-0823456' и 'INV-0880823' номера счетов-фактур, пока поле номера счета-фактуры доступно для мягкого поиска. Пользователю можно было бы даже дать опцию выбрать, какой столбец (столбцы) искать, как сканирующий все номера телефона в базе данных не мог бы всегда иметь смысла.

Вы не должны пытаться индексировать все доступные для поиска столбцы. Стратегия "полного индекса" может стать очень costy в терминах диска volume\server наверху и будет не всегда иметь смысл для редко искавших столбцов. Не волнуйтесь много о который: пользователи не будут возражать против некоторой задержки получения их ответа.

2
ответ дан 17 December 2019 в 00:15
поделиться

Если Вы хотите одно решение для поиска остановки и хотите иметь поиск, работающий в течение минут над Вашим сайтом или блогом, можно всегда использовать BuildaSearch. BuildaSearch делает пользовательское поисковое создание быстрым и легким. Просто скопируйте и вставьте свой пользовательский код JavaScript и немедленно, у Вас есть полностью функциональный пользовательский поиск, работающий над Вашим веб-сайтом. Самая интересная функция об этом поисковом сервисе - то, что Вы не должны писать одну строку кода и работ ни над какой средой веб-сервера.

0
ответ дан 17 December 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: