java - studio - repository cran r




Ricerca MultiCore Solr (3)

È possibile combinare il multicore con sharding tramite il seguente URL:

http://localhost:8983/solr/core0/select?shards=localhost:8983/solr/core0,localhost:8983/solr/core1&q=*:*

Sto usando Apache Solr per la ricerca. Io uso questo per fornire una ricerca personale basata sull'utente. cioè ogni utente ha un indice Lucene fisico separato. Quindi per 10 utenti, ho 10 indici fisici separati su disco.

Per supportare le ricerche su questi indici, sto pensando di utilizzare Solr MultiCore Feature . Con i vari articoli che ho letto su questo, sembra che funzionerebbe.

Dove non sono sicuro, quando un ricercatore di solr riceve una query, invece di inviare la query a tutti i core multipli, come faccio a canalizzare la query verso quel nucleo al quale è collegato l'indice di quel particolare utente? Si tratta di un cambiamento di configurazione o devo effettuare delle modifiche a livello di codice?

cioè voglio inviare la query a un solo solr-core (basato su userid). È possibile?

AGGIORNAMENTO: Quindi, secondo uno dei solutoni, posso aggiungere multi-core nel solrconfig.xml, ovvero al momento dell'inizio di Solr dovrò menzionare i nuclei (o nel mio caso gli utenti). Così ora, se voglio aggiungere un nuovo indice utente, probabilmente dovrò smettere di solr, modificare la sua configurazione, aggiungere gli utenti core e avviare nuovamente solr. C'è un modo per aggiungere dinamicamente core ad un'istanza solr in esecuzione?


Quando si utilizza mmulticore, si crea una cartella conf separata che contiene query e schemi separati e il modo in cui i risultati vengono recuperati.

E quando premi l'url di seguito

http://{your localhost}:8983/solr

Vedrai la lista dei core che hai creato. e per ogni core dovrai creare un indice come questo

http://{your localhost}:8983/solr/{your_core_name1}/dataimport?command=full-import
http://{your localhost}:8983/solr/{your_core_name2}/dataimport?command=full-import
http://{your localhost}:8983/solr/{your_core_name3}/dataimport?command=full-import

e dopo aver creato l'indice, dovrai fare riferimento al core quando esegui una ricerca come questa,

http://{your localhost}:8983/solr/{your_core_name3}/select/?q=*:*&start=0&rows=100

I core Solr sono essenzialmente più indici eseguiti nello stesso contesto su un server delle applicazioni. Puoi pensare a come installare 1 file di guerra per ogni utente. Ogni core è separato da un nome, quindi è necessario tenere traccia di quale url è valido per quale utente.

Per esempio,

http://host.com/solr/usercore1/select?q=test http://host.com/solr/usercore2/select?q=test

Che si basa sul config solr.xml :

<solr persistent="true" sharedLib="lib">
 <cores adminPath="/admin/cores">
  <core name="usercore1" instanceDir="usercore1" />
  <core name="usercore2" instanceDir="usercore1" />
 </cores>
</solr>

... invece di inviare la query a tutti i core multipli ...

Questo approccio è chiamato sharding e si basa sulla ricerca distribuita, che è una funzionalità completamente separata che si concentra sulla suddivisione di un indice utente su più istanze solr.

[EDIT] Un approccio alla creazione di nuovi core è di solrj che fornisce un CoreAdmin.createCore(..) routine CoreAdmin.createCore(..) . Puoi anche farlo utilizzando una richiesta HTTP manuale: /cores?action=CREATE&name=usercore3 ...

Solr può anche ricaricare la sua configurazione in modo dinamico, se hai uno script sul posto che ha modificato la configurazione del core, anche questi cambiamenti dovrebbero essere rilevati.







solr