Я использую Riak в качестве внутреннего хранилища токенов для моего приложения Elixir. Эти токены часто имеют ограниченное время жизни (например, 5 минут), и у меня есть процесс очистки, который ищет токен с истекшим сроком действия, чтобы затем удалить их.
Я использую пользовательский индекс в поле времени истечения:
<dynamicField name="*_int_register" type="int" indexed="true" stored="true" multiValued="false"/>
Bucket, схема и индекс создаются программно при запуске приложения.
Однако я заметил, что при поиске возвращается не более 10 результатов:
iex> Riak.Search.query("asteroid_token_store_device_code_riak_index", "exp_int_register:*")
{:ok,
{:search_results,
[
{"asteroid_token_store_device_code_riak_index",
[
{"score", "1.00000000000000000000e+00"},
{"_yz_rb", "device_code"},
{"_yz_rt", "ephemeral_token"},
{"_yz_rk", "pbvWQLGRIym0e3ZpTujHEE831gcIgptUfeZE6YmcdHA"},
{"_yz_id",
"1*ephemeral_token*device_code*pbvWQLGRIym0e3ZpTujHEE831gcIgptUfeZE6YmcdHA*11"},
{"exp_int_register", "1561199750"},
{"refresh_token_id_register", "CRJ435CQ"}
]},
# 9 other results
Похоже, что по умолчанию Solr возвращает 10 результатов. В частности, созданный solrconfig.xml
содержит следующую настройку:
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
</lst>
<!-- Custom Yokozuna component to translate custom shard filter
queries. -->
<arr name="first-components">
<str>fq_shard_translator</str>
</arr>
</requestHandler>
Это причина возврата только 10 записей? Можно ли программно изменить это значение, используя клиентские библиотеки Erlang или Elixir Riak?