Индексирование загруженных документов - поиск доступен только пользователям, которые их загрузили - PullRequest
0 голосов
/ 18 января 2011

Если бы кто-то мог указать мне правильное направление, это было бы очень полезно.

Я написал собственную CMS, в которой я хочу, чтобы каждый пользователь мог загружать документы (.doc .docx .pdf .rtf .txt и т. Д.), А затем искать в этих файлах ключевые слова.

CMS полностью написана на PHP и MySQL в среде Linux.

После загрузки документы будут храниться в личной папке пользователя на сервере «как есть». Каждый пользователь будет хранить сотни, если не тысячи документов.

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

Может ли кто-нибудь указать мне правильное направление? Я взглянул на Solr, но решения такого типа кажутся такими сложными. Я провел целую неделю, рассматривая различные решения, и это моя последняя попытка найти решение.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 18 января 2011

2 варианта, которые я вижу.

  1. Индекс поиска для пользователя. Их документы индексируются отдельно от всех остальных. Когда они делают поиск, они попадают в свой собственный индекс поиска. Нет опасности видеть результаты других или получать оценки на основе содержимого из документов других. Недостатком является необходимость хранить и обновлять индекс отдельно. Я хотел бы использовать Lucene для чего-то подобного, так как индексы будут небольшими.

  2. Единый поисковый индекс. Все пользователи имеют общий поисковый индекс. Результаты поиска должны быть отфильтрованы, чтобы для этого пользователя были возвращены только результаты. Плюсом является реализация единого поискового индекса (для этого отлично подойдет Solr). Недостатком является риск перекрестного общения между поисками пользователей. На результаты оценки влияют документы других пользователей, что приводит к ухудшению результатов поиска.

Мне неприятно это говорить, но с точки зрения качества я бы склонялся к цифре 1. Номер 2 кажется более эффективным и простым, но результаты работы для меня важнее.

0 голосов
/ 18 января 2011

Пока все файлы пользователя находятся в изолированном каталоге или есть какой-то способ указать документы одного пользователя, например, добавив идентификатор пользователя к имени файла, вы можете использовать grep.

Недостатки:

  • Каждый поиск должен проходить через все документы, поэтому, если у вас много документов или очень больших документов, это будет медленным.
  • Двоичные форматы документов, такие как Word илиPDF может не дать точных результатов.
  • Это не корпоративное решение.

Исправленный ответ: Попробуйте mnoGoSearch

0 голосов
/ 18 января 2011

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

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