Поиск документа по идентификатору очень медленно - PullRequest
1 голос
/ 12 декабря 2011

в моих документах есть поле id, называемое "doc_id", объявленное со следующими атрибутами:

<field name="doc_id" type="long" indexed="true" stored="true" required="true" />

Этот идентификатор помечен как уникальный ключ с тегом.

Я пытаюсь загрузить много документов одновременно, указав их идентификаторы в запросе, например. doc_id: (235, 163, 256, ..., 10473)

Количество идентификаторов в запросе никогда не превышает 100. Однако чем больше документов находится в хранилище, тем больше времени требуется для выполнения этого запроса. Я думал, что это будет что-то вроде SQL-запроса f.e. «выберите документ, где doc_id in (...)», но с индексом «doc_id» время выполнения должно быть постоянным, не так ли? Так почему же в solandra он замедляется после того, как я добавляю все больше и больше документов?

Я работаю с Solandra (Solr 3.4 + Cassandra 1.0.3)

С уважением, T

Ответы [ 2 ]

2 голосов
/ 06 марта 2014

Использование RealTimeGet (Solr> = 4.0).

http://localhost:8983/solr/get?ids=1,2
1 голос
/ 12 декабря 2011

Поскольку идентификаторы уникальны, не ищите их.Производительность поиска всегда будет ниже.
Попробуйте использовать фильтры запросов, например, fq=doc_id:235
Это позволит Solr использовать filtercache и значительно улучшит производительность.

...