Подход к поиску контента сайта - PullRequest
0 голосов
/ 22 апреля 2011

Я искал поисковый подход, реализованный на моем веб-сайте, однако я не смог выбрать лучший подход. Содержимое, в котором можно искать, размещено в шести разных таблицах. Одна таблица содержит «теги», одна с «категориями», а затем четыре таблицы, каждая из которых содержит столбец заголовка.

Я искал чистый SQL-поиск, но он кажется немного медленным (я не могу использовать индекс полнотекстового поиска), и, кроме того, я хочу, чтобы поиск находил результаты со словами, похожими на слова, которые ищут, а не только «Всего совпадений», например поиск пропущенного слова «Memhis» также должен возвращать содержимое с «Memphis».

Какой подход вы выберете и какие алгоритмы / структуры данных хороши для этой цели?

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

Если вы не строго придерживаетесь встроенного решения, я бы порекомендовал Solr . Проще говоря, он предоставляет Lucene через HTTP. Мы начали с Lucene.Net, но нам не потребовалось много времени, чтобы перейти на Solr. Он написан на Java, но вам не нужно писать код Java.

Можно использовать DIH (я не использовал его) или Solrnet (тот, который мы используем) с c # /. Net, чтобы выполнить работу.

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

Это может быть крутая кривая обучения, но я бы сказал, что стоит потратить время, если вы сможете сэкономить.

0 голосов
/ 22 апреля 2011

Lucene.NET кажется очень популярным для поиска по веб-сайту, и я думаю, что он может делать все эти нечеткие совпадения.Для этого не требуется полнотекстовый поиск SQL.

0 голосов
/ 22 апреля 2011

Я хотел бы создать еще один столбец таблицы, который объединит все различные столбцы, а затем запустить поиск по нему.Вот так я и сделал на своем сайте.Чтобы найти похожие слова, для этого должен существовать плагин.Вы не должны делать это сами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...