Question

J'utilise Nutch 1.4 et Solr 3.3.0 pour ramper et indexer mon site Web.Sur le front-end, j'utilise le solarium d'API PHP pour interroger sur SOLR.J'ai les champs suivants que je recherche par défaut:

content -> of type Text

title -> of type Text

ur-> of type url

Je souhaite rechercher un mot clé, mais je souhaite en même temps exclure certains des résultats en fonction de certains modèles d'URL sans affecter le nombre total de résultats de résultats.(Par exemple, je souhaite toujours montrer 20 résultats.)

Si quelqu'un sait une façon de le faire avec Solarium, ce serait vraiment bien.Mais sinon je suis curieux de savoir comment cela peut être fait à Solr.

J'ai déjà examiné la recherche à facettes mais je ne pouvais pas envelopper ma tête autour de lui.Si quelqu'un peut expliquer en détail, je l'apprécierais vraiment.

Était-ce utile?

La solution

Je ne peux pas vous aider avec solarium, mais votre requête SOLR devrait être relativement simple:

q=+keyword -ur:exclude&rows=20

Autres conseils

http:// {url_endpoint} /? wt= json & lignes= 20 & start= 0 & q= Contenu: ContentText ou Titre: titsext ou ur: url

  • WT= JSON Résultat sera au format JSON
  • Rows= 20 Résultat sera paginé par 20 enregistrements par page
  • start= 0 page pour commencer à afficher les résultats
  • q= requête pour exécuter la recherche (assurez-vous d'échapper correctement aux entrées également * Wildcard pour rechercher quoi que ce soit avant et après)

    en PHP en utilisant 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();
    

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top