Per indicizzare il mio sito Web, dispongo di uno script Ruby che a sua volta genera uno script di shell che carica tutti i file nella root del documento in Solr. Lo script di shell ha molte linee simili a questa:Come aumentare un documento SOLR durante l'indicizzazione con/solr/update
curl -s \
"http://localhost:8983/solr/update/extract?literal.id=/about/core-team/&commit=false" \
-F "[email protected]/extra/www/docroot/about/core-team/index.html"
... e termina con:
curl -s http://localhost:8983/solr/update --data-binary \
'<commit/>' -H 'Content-type:text/xml; charset=utf-8'
Questa Carica tutti i documenti in mio documento root per Solr. Io uso tika and ExtractingRequestHandler per caricare documenti in vari formati (principalmente PDF e HTML) a Solr.
Nello script che genera questo script di shell, vorrei aumentare alcuni documenti in base al fatto che il loro campo ID (a/k/a url) corrisponda a determinate espressioni regolari.
Diciamo che queste sono le regole d'amplificazione (pseudocodice):
boost = 2 if url =~ /cool/
boost = 3 if url =~ /verycool/
# otherwise we do not specify a boost
Qual è il modo più semplice per aggiungere quella spinta indice di tempo alla mia richiesta http?
ho provato:
curl -s \
"http://localhost:8983/solr/update/extract?literal.id=/verycool/core-team/&commit=false" \
-F "[email protected]/extra/www/docroot/verycool/core-team/index.html" \
-F boost=3
e:
curl -s \
"http://localhost:8983/solr/update/extract?literal.id=/verycool/core-team/&commit=false" \
-F "[email protected]/extra/www/docroot/verycool/core-team/index.html" \
-F boost.id=3
Né fatto la differenza nel l'ordinamento dei risultati di ricerca. Quello che voglio è che i risultati potenziati vengano prima nei risultati di ricerca, indipendentemente da ciò che l'utente ha cercato (a condizione, naturalmente, che il documento contenga la loro query).
Capisco che se I POST in formato XML è possibile specificare il valore di boost per l'intero documento o un campo specifico. Ma se lo faccio, non è chiaro come specificare un file come contenuto del documento. In realtà, il tika page fornisce un esempio parziale:
curl "http://localhost:8983/solr/update/extract?literal.id=doc5&defaultField=text" \
--data-binary @tutorial.html -H 'Content-type:text/html'
Ma ancora una volta non è chiaro dove/come specificare la mia spinta. Ho provato:
curl \
"http://localhost:8983/solr/update/extract?literal.id=mydocid&defaultField=text&boost=3"\
--data-binary @mydoc.html -H 'Content-type:text/html'
e
curl \
"http://localhost:8983/solr/update/extract?literal.id=mydocid&defaultField=text&boost.id=3"\
--data-binary @mydoc.html -H 'Content-type:text/html'
Nessuno dei quali alterato i risultati di ricerca.
C'è un modo per aggiornare solo l'attributo boost di un documento (non un campo specifico) senza alterare il contenuto del documento? Se è così, ho potuto realizzare il mio obiettivo in due fasi: 1) Carica documento/indice come ho fatto 2) Specificare spinta per alcuni documenti
Ho ottenuto fino ad ora senza utilizzare il formato XML. Se utilizzo il formato XML, come faccio a caricare un file (PDF o HTML) come corpo del documento? –
Spiacente, non ho notato che stavi usando ExtractingHandler ... La sintassi che usi per specificare un boost su un campo è corretta (boost.field = valore). Ma noto che stai aumentando il campo ID.Per essere efficace, un incremento dell'indice dovrebbe essere su un campo su cui effettuerai una query (vedi http://wiki.apache.org/solr/SolrRelevancyFAQ#index-time_boosts). –
Grazie. Finalmente ho potuto farlo funzionare in questo modo: 'curl -s" http: // localhost: 8983/solr/update/extract? Literal.id =/mydoc.html & commit = false & boost.text = 3 "-F" miofile [email protected] "' Ho anche dovuto cambiare il mio modulo di ricerca per cercare esplicitamente il campo 'testo' che è dove tika mette tutti i contenuti dei PDF, ecc. Grazie. –