Como funciona o aquecimento automático do Solr e as diversas mecânicas de cache?

Como funciona o aquecimento automático do Solr e as diversas mecânicas de cache?

Estava a ler sobre as caches e o aquecimento e fiquei com um monte de perguntas.

O Google me trouxe aqui:https://solr.apache.org/guide/7_3/query-settings-in-solrconfig.html

Embora a versão mais recente pareça estar aqui:https://solr.apache.org/guide/solr/latest/configuration-guide/caches-warming.html

Depois de ler esta documentação, tenho uma série de dúvidas, vou listá-las aqui. Embora a questão principal seja sobre o aquecimento automático.

1/Vejo menção a um "Pesquisador de índice", que pode ter instâncias que têm vida útil e essas instâncias possuem caches.

Devo entender que o processo de construção de novos e de invalidação dos antigos significa que as "instâncias" se referem ao fato de que ainda pode haver instâncias antigas servindo dados antigos, enquanto a nova está sendo construída? E não há vários Index Searchers para um núcleo ao mesmo tempo?

2/ Como tudo isso funciona em termos de invalidação de cache? O cache é basicamente o pesquisador e se 1 cache for invalidado, o pesquisador deverá ser recriado junto com todos os outros caches?

3/Estou lendo que o aquecimento automático basicamente pega um monte de entradas de uma instância antiga do Index Searcher e as adiciona à nova instância. Existe algum tipo de garantia de que essas entradas copiadas ainda sejam válidas? Ou seja: se um cache não for mais válido, devido a algum commit que possa incluir alterações em determinados documentos ou resultados de consultas... existe um mecanismo para garantir que evitemos copiar entradas antigas que contenham documentos/resultados baseados em material desatualizado ?

4/Vejo exemplos de caches usando números como 512 entradas. Isso parece baixo. Quais são as considerações aqui? Os caches são reconstruídos com muita frequência devido à necessidade de construir novos Index Searchers e, portanto, é um desperdício criar objetos grandes o tempo todo, apenas para que eles sejam frequentemente abandonados e depois reconstruídos? Ou alguma outra coisa?

5/ Suponha que você tenha um aplicativo que cria documentos e executa consultas com base em IDs de usuário gerados pelo aplicativo. E eu tenho 1 núcleo/coleção "user_documents" e tudo vai lá, com o "user id" sendo um campo. Neste cenário, parece que a ação de um usuário pode invalidar o cache para todos os usuários. Como evitar isso?

6/ Em relação aos filtercaches, estou lendo que a entrada mais antiga de um cache LRU é substituída por novos inteiros. Como o filtro armazena entradas de história para cada "fq" de uma consulta, pode acontecer que uma consulta longa seja empurrada para fora do cache, mas apenas alguns de seus fqs e não outros? Isso é uma coisa ruim?

7/ Para o cache de documentos, vejo a linha:

O tamanho do documentCache deve sempre ser maior que max_results

vezes max_concurrent_queries, para garantir que o Solr não precise buscar novamente um documento durante uma solicitação.

Quais são as implicações disso? Não consigo encontrar documentação sobre max_results e max_concurrent_queries como nomes para configurações.

Obrigado a todos que dedicam seu tempo a isso.

informação relacionada