вы должны позаботиться о том, чтобы разные типы объектов в одном индексе
Если вы ищете «id: 1», как вы знаете, если вы получили тире или активность?
Или:
- убедитесь, что имена полей уникальны, т.е. «dash_id», «activity_id»
 - добавьте поле «_type» и добавьте «_type: dash» или «_type: activity» в качестве фильтра для поиска
 
вы не можете выполнить свое «соединение» в одном запросе, по крайней мере, с текущим Lucene.net (3.0.3)
Lucene - это хранилище документов, это несколько способов хранения хранилища ключей. Каждый документ - «просто куча полей».
Вы можете просто запросить для каждого объекта, а затем использовать Linq для объединения двух коллекций. Но это может быть довольно неэффективным и интенсивным в памяти. Все зависит от того, сколько результатов вы ожидаете. Если число мало, это, вероятно, самое простое.
Однако вы можете сделать что-то достаточно приличное с двумя запросами и «синхронизированным перечислимым». Caveat: Трудно сказать, что такое «Dash», но глядя на свойства, которые я собираюсь предположить, что для каждой операции есть много Dash
Псевдокод
Store.YES
                Это было просто списано с моей головы, поэтому извиняюсь, если это не совсем правильно :)
Идея состоит в том, чтобы предвидеть действия, а затем перевести счетчик штриховки вперед, чтобы поддерживать синхронизацию с активностью. Предполагается, что вы сохраняете значения свойств в idполях. Этот подход просто получает idполя, пока мы не найдем совпадение, а затем проецируем весь объект.
Другой вариант
заключается в том, чтобы рассматривать Lucene как «хранилище документов». Создайте класс, который моделирует parent-child. Итак, у Activity есть свойство, которое представляет собой набор Dash.
Сериализуйте этот объект в двоичное поле. Добавьте соответствующие поля для поиска Store.No. Это означает, что соединение не требуется, вы получаете весь объект за один удар.
Это работает, если частота обновления низкая, так как вам нужно обновить весь объект, а не просто добавить одну Dash и полагаться на соединение.
Удачи :)