@djacode

Как реализовать поиск по содержимому файлов(pdf, txt, rtf, doc, docx, excel)?

Есть инфоблок со статьями, к кажой статье могут прикрепляться n документов разного формата(множественное свойство типа файл).
Как реализовать поиск по содержимому этих прикрепленных файлов?
Задача нетривиальная. Первый раз с таким сталкиваюсь. Поскольку статей и файлов много, думал раз в сутки запускать крон, в нем уже в зависимости от расширения файла, подключать необходимую либу для работы с файлом, выгружать содержимое файла в виде текстовой информации в таблицу, в которой есть article_id и text , далее по полю text производить поиск. Более разумного решения почему то не вижу.
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
Если поле имеет тип "Файл" (E) и для него включена опция индексации содержимого, при этом на сайте установлен модуль "Поиск" (search), то можно можно подписаться на событие OnSearchGetFileContent модуля search (оно принимает только 1 параметр - абсолютный путь к файлу), а возвращает: либо null / false, либо структуру с результатами парсинга.

Структура с результатами парсинга - это массив с 2 обязательными ключами:
- CONTENT - строка(!)
- PROPERTIES - ассоциативный массив, в котором должен присутствовать обязательный аттрибут с "Код свойства страницы в котором хранятся теги" (из настроек модуля поиска).

Пример структуры:
$result = [
	'CONTENT' => 'содержимое файла, которое мы распарсили',
	'PROPERTIES' => [
		COption::GetOptionString("search", "page_tag_property") => 'тег1, тег2',
	]
];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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