Вопрос

В моем текущем проекте мне нужно проиндексировать все электронные письма и их вложения из нескольких почтовых ящиков.

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

<fields>
<field name="id" require="true"/>
<field name="uid" require="true"/>
//A lot of other fields
<dynamicField name="attachmentName_*" require="false">
<dynamicField name="attachmentBody_*" require="false">
</fields>

Но сейчас я не совсем уверен, что это лучшая структура.Я не думаю, что смогу выполнить поиск по одному термину (например переполнение стека) и знать, где был этот термин (например Прикрепленное тело_1 или _2 или _3 и т.д.) с помощью одного запроса.

У кого-нибудь есть лучшее предложение по структуре моего индекса?

Это было полезно?

Решение 2

Я нашел одно возможное решение.Все, что мне нужно сделать, это установить attachmentBody как сохраненный.

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

Другие советы

Вы можете использовать многозначные поля для attachmentName и attachmentBody.Таким образом, у вас было бы 2 обычных поля вместо динамических полей.Затем вы можете использовать выделение, чтобы вернуть конкретные значения, которые соответствуют окружающему контексту.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top