Можно ли использовать Lucene.net для поисковой системы на основе тегов? - PullRequest
3 голосов
/ 15 марта 2012

Я занимаюсь разработкой приложения ASP.Net MVC3, в котором будет несколько сотен видео. Я хочу создать поисковую систему на основе тегов и других параметров, таких как тип пользователя, который загружал видео, дата видео, категория видео и т. Д.

Я искал вокруг, и Lucene.NET кажется действительно хорошим инструментом для полнотекстового поиска, но я не знаю, является ли это лучшим решением для моего проекта ... Я прочитал учебники, и они рекомендуют продолжать поиск индекс до минимума, но также и то, что вам НЕ следует обращаться к базе данных для получения дополнительных данных, которые не хранятся в поисковом индексе ...

Как это возможно?

Позвольте привести пример: у меня есть строка видео (как концепция, она действительно содержится в разных таблицах SQL), в которой есть столбцы для идентификатора видео, имени видео, имени видеофайла, полного пути, идентификатора пользователя. , тип пользователя, теги, дата создания, категория видео, подкатегория видео, местоположение видео и т. д. Если я хочу создать поисковый индекс lucene, я думаю, что мне придется поместить туда всю информацию, чтобы позже я мог запросить по каждому параметру, верно?

Это кажется мне дубликатом базы данных SQL, но с перегрузкой добавления, редактирования и удаления документов из поискового индекса lucene. Это стандартный сценарий при использовании lucene? Все примеры, которые я видел с lucene, основаны на идентификаторе, заголовке и теле сообщения.

Что ты думаешь? Можете ли вы дать мне немного света?

1 Ответ

2 голосов
/ 15 марта 2012

Да, если вы хотите запросить несколько полей (включая такие вещи, как теги) из lucene, вам нужно сделать эти данные доступными для lucene. Это может звучать , как будто это дублирование, но это не избыточное дублирование - это реструктуризация данных в совсем другой формат - проиндексированный для поиска.

Должно работать нормально; это довольно похоже на то, как работает поиск здесь на stackoverflow (который использует lucene.net для выполнения поиска).

Следует отметить, однако, что несколько сотен - это не большая выборка: откровенно говоря, вы могли бы делать это любым способом, и это займет примерно столько же времени. Написание сложного SQL-запроса должно работать так же, как и полнотекстовый поиск в базе данных (то есть, как при поиске в стеке используется для работы), так же, как и фильтрация объектов в памяти (на уровне нескольких сотен, Вы можете просто кешировать все данные, кроме видеокадров в памяти).

...