Come cercare due cose diverse in due campi diversi?
Domanda
Sto usando Nuch 1.4 e SOLR 3.3.0 per strisciare e indicizzare il mio sito web.Sul front-end uso il solarium API PHP per interrogare in solr.Ho i seguenti campi che sto cercando per impostazione predefinita:
content -> of type Text
title -> of type Text
ur-> of type url
.
Voglio cercare una parola chiave ma allo stesso tempo voglio escludere alcuni dei risultati in base a un modello URL senza influire sul numero totale di risultati di ritorno dei risultati.(Ad esempio, voglio sempre mostrare 20 risultati.)
Se qualcuno conosce un modo per farlo con il solarium sarebbe davvero carino.Ma se non sono curioso di sapere come questo può essere fatto in solr.
Ho già guardato la ricerca sfaccettata ma non potevo avvolgermi la testa.Se qualcuno può spiegare in dettaglio, lo apprezzerei davvero.
Soluzione
Non posso aiutarti con il solarium, ma la tua query SOLR dovrebbe essere relativamente semplice:
q=+keyword -ur:exclude&rows=20
. Altri suggerimenti
http:// {url_endpoint} /? wt= json & righe= 20 e start= 0 & q= contenuto: contentText o Titolo: titletExt o ur: URL
- .
- wt= json risultato sarà in formato JSON
- righe= 20 risultati saranno paginati da 20 record per pagina
- Start= 0 Page per avviare Visualizzazione dei risultati
- q= query per eseguire la ricerca (assicurati di sfuggire correttamente in ingressi anche * jolly per cercare qualcosa prima e dopo)
in PHP usando Curl.
.$solr_end_point = ''; //enter endpoint $search_term = ''; $url_type = ''; $start = 0; $ch = curl_init(); $query = urlencode("content:*{$search_term}* OR title:*{$search_term}* OR ur:*{$url_type}*"); curl_setopt($ch, CURLOPT_URL, "http://{$solr_end_point}/?wt=json&rows=30&start={$start}&q={$query}"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 2); $result = curl_exec($ch); curl_close($ch); print_r($result); //output result (json) $json_result = json_decode($result,true); print_r($json_result); //output result as an array exit();