Указанный вами индекс является правильным (/ path / to [@attribute]), но, к сожалению, оптимизатор xDB в настоящее время не распознает этот конкретный случай, поскольку «целевой узел», хранящийся в индексе, всегда является элементом и не атрибут. Если у атрибута / path / to / @ мало результатов, вы можете оптимизировать его, слегка изменив свой запрос следующим образом: Different-values (/ path / to [@attribute] / @ attribute). С помощью этого запроса оптимизатор распознает, что существует индекс, который он может использовать для доступа к элементу «to», но затем он все еще имеет доступ к целевому документу, чтобы получить атрибут для шага @attribute. Именно поэтому он будет полезен только в тех случаях, когда хитов немного: каждый хит, скорее всего, получит доступ к отдельной странице данных.
Что вы также можете сделать, это получить доступ к ключам в индексе напрямую через API: XhiveIndexIf.getKeys (). Это будет очень быстро, но очевидно, что это не очень удобно для пользователя (и должно выполняться оптимизатором).
Очевидно, оптимизатор мог бы справиться с этим. Я добавлю это в трекер ошибок.