public function actionSuche($code = "")
 {
     if (AntiXSS::isTokenSet("search_form")) {
         $krits = new RISSucheKrits();
         if (trim($_REQUEST["volltext"]) != "") {
             $krits->addVolltextsucheKrit($_REQUEST["volltext"]);
         }
         if (trim($_REQUEST["antrag_nr"]) != "") {
             $krits->addAntragNrKrit($_REQUEST["antrag_nr"]);
         }
         if ($_REQUEST["typ"] != "") {
             $krits->addAntragTypKrit($_REQUEST["typ"]);
         }
         if ($_REQUEST["referat"] > 0) {
             $krits->addReferatKrit($_REQUEST["referat"]);
         }
         /*
          * @TODO: Setzt voraus: offizielles Datum eines Dokuments ermitteln
         $datum_von = $datum_bis = null;
         if ($_REQUEST["datum_von"] != "") {
             $x = explode(".", $_REQUEST["datum_von"]);
             if (count($x) == 3) $datum_von = $x[2] . "-" . $x[1] . "-" . $x[0] . " 00:00:00";
         }
         if ($_REQUEST["datum_bis"] != "") {
             $x = explode(".", $_REQUEST["datum_bis"]);
             if (count($x) == 3) $datum_bis = $x[2] . "-" . $x[1] . "-" . $x[0] . " 23:59:59";
         }
         if ($datum_von || $datum_bis) $krits->addDatumKrit($datum_von, $datum_bis);
         */
     } elseif (isset($_REQUEST["suchbegriff"]) && $_REQUEST["suchbegriff"] != "") {
         $suchbegriff = $_REQUEST["suchbegriff"];
         if ($_SERVER["REQUEST_METHOD"] == 'POST') {
             $this->redirect($this->createUrl("index/suche", ["suchbegriff" => $suchbegriff]));
         }
         $this->suche_pre = $suchbegriff;
         $krits = new RISSucheKrits();
         $krits->addVolltextsucheKrit($suchbegriff);
     } else {
         $krits = RISSucheKrits::createFromUrl($_REQUEST);
     }
     $this->load_leaflet_css = true;
     if ($krits->getKritsCount() > 0) {
         $benachrichtigungen_optionen = $this->sucheBenachrichtigungenAnmelden($krits, $code);
         $solr = RISSolrHelper::getSolrClient("ris");
         $select = $solr->createSelect();
         $krits->addKritsToSolr($select);
         $select->setRows(50);
         $select->addSort('sort_datum', $select::SORT_DESC);
         /** @var Solarium\QueryType\Select\Query\Component\Highlighting\Highlighting $hl */
         $hl = $select->getHighlighting();
         $hl->setFields('text, text_ocr, antrag_betreff');
         $hl->setSimplePrefix('<b>');
         $hl->setSimplePostfix('</b>');
         $facetSet = $select->getFacetSet();
         $facetSet->createFacetField('antrag_typ')->setField('antrag_typ');
         $facetSet->createFacetField('antrag_wahlperiode')->setField('antrag_wahlperiode');
         try {
             $ergebnisse = $solr->select($select);
             if ($krits->isGeoKrit()) {
                 $geodata = $this->getJSGeodata($krits, $ergebnisse);
             } else {
                 $geodata = null;
             }
             $this->render("suchergebnisse", array_merge(["krits" => $krits, "ergebnisse" => $ergebnisse, "geodata" => $geodata], $benachrichtigungen_optionen));
         } catch (Exception $e) {
             $this->render('error', ["code" => 500, "message" => "Ein Fehler bei der Suche ist aufgetreten"]);
             Yii::app()->end(500);
         }
     } else {
         $this->render("suche");
     }
 }
Ejemplo n.º 2
0
                                <?php 
    foreach ($person->antraege as $antrag) {
        echo "<li>";
        echo "<a class='antrag-name' href='" . CHtml::encode($antrag->getLink()) . "'>" . $antrag->getName(true) . "</a>";
        echo "<span class='list-js-datum'> (" . RISTools::datumstring($antrag->gestellt_am) . ")</span>";
        echo "</li>\n";
    }
    ?>
                            </ul>
                        </td>
                    </tr>
                <?php 
} else {
    $suche = new RISSucheKrits();
    $suche->addVolltextsucheKrit("\"" . $person->getName() . "\"");
    $solr = RISSolrHelper::getSolrClient("ris");
    $select = $solr->createSelect();
    $suche->addKritsToSolr($select);
    $select->setRows(50);
    $select->addSort('sort_datum', $select::SORT_DESC);
    /** @var Solarium\QueryType\Select\Query\Component\Highlighting\Highlighting $hl */
    $hl = $select->getHighlighting();
    $hl->setFields('text, text_ocr, antrag_betreff');
    $hl->setSimplePrefix('<b>');
    $hl->setSimplePostfix('</b>');
    /** @var \Solarium\QueryType\Select\Result\Result $ergebnisse */
    $ergebnisse = $solr->select($select);
    $dokumente = $ergebnisse->getDocuments();
    if (count($dokumente) > 0) {
        echo '<tr><th>Namentlich erwähnt in:</th><td><ul>';
        $highlighting = $ergebnisse->getHighlighting();
Ejemplo n.º 3
0
 /**
  * @param int[] $document_ids
  * @param RISSucheKrits $benachrichtigung
  * @return array
  */
 public function queryBenachrichtigungen($document_ids, $benachrichtigung)
 {
     $solr = RISSolrHelper::getSolrClient("ris");
     $select = $solr->createSelect();
     $select->addSort('sort_datum', $select::SORT_DESC);
     $select->setRows(100);
     /** @var Solarium\QueryType\Select\Query\Component\DisMax $dismax */
     $dismax = $select->getDisMax();
     $dismax->setQueryParser('edismax');
     $dismax->setQueryFields("text text_ocr");
     $select->setQuery($benachrichtigung->getSolrQueryStr($select));
     $select->createFilterQuery('maxprice')->setQuery(implode(" OR ", $document_ids));
     /** @var Solarium\QueryType\Select\Query\Component\Highlighting\Highlighting $hl */
     $hl = $select->getHighlighting();
     $hl->setFields('text, text_ocr, antrag_betreff');
     $hl->setSimplePrefix('<b>');
     $hl->setSimplePostfix('</b>');
     $ergebnisse = $solr->select($select);
     /** @var RISSolrDocument[] $documents */
     $documents = $ergebnisse->getDocuments();
     $res = [];
     foreach ($documents as $document) {
         $res[] = ["id" => $document->id, "name" => $document->dokument_name . ", " . $document->antrag_betreff];
     }
     return $res;
 }
Ejemplo n.º 4
0
 /**
  */
 public function solrIndex()
 {
     $tries = 3;
     while ($tries > 0) {
         try {
             $solr = RISSolrHelper::getSolrClient("ris");
             $update = $solr->createUpdate();
             if ($this->deleted == 1) {
                 if ($this->typ == static::$TYP_RATHAUSUMSCHAU) {
                     $update->addDeleteQuery("id:\"Rathausumschau:" . $this->id . "\"");
                 } else {
                     $update->addDeleteQuery("id:\"Document:" . $this->id . "\"");
                 }
             } else {
                 if (in_array($this->typ, [static::$TYP_STADTRAT_TERMIN, static::$TYP_BA_TERMIN])) {
                     $this->solrIndex_termin_do($update);
                 } elseif (in_array($this->typ, [static::$TYP_STADTRAT_BESCHLUSS, static::$TYP_BA_BESCHLUSS])) {
                     $this->solrIndex_beschluss_do($update);
                 } elseif ($this->typ == static::$TYP_RATHAUSUMSCHAU) {
                     $this->solrIndex_rathausumschau_do($update);
                 } else {
                     $this->solrIndex_antrag_do($update);
                 }
             }
             $update->addCommit();
             $solr->update($update);
             return;
         } catch (Exception $e) {
             $tries--;
             sleep(15);
         }
     }
     RISTools::send_email(Yii::app()->params['adminEmail'], "Failed Indexing", print_r($this->getAttributes(), true), null, "system");
 }
 public function actionAlleSuchergebnisse()
 {
     $this->requireLogin($this->createUrl("index/benachrichtigungen"));
     /** @var BenutzerIn $ich */
     $ich = $this->aktuelleBenutzerIn();
     $solr = RISSolrHelper::getSolrClient("ris");
     $select = $this->getAlleSuchergebnisse($solr, $ich);
     $facetSet = $select->getFacetSet();
     $facetSet->createFacetField('antrag_typ')->setField('antrag_typ');
     $facetSet->createFacetField('antrag_wahlperiode')->setField('antrag_wahlperiode');
     $ergebnisse = $solr->select($select);
     $this->render("alle_suchergebnisse", ["ergebnisse" => $ergebnisse]);
 }