[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Addon RexSearch (Fulltext-Search-Addon) - Seite 23 - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
benny_69
Beiträge: 4
Registriert: 4. Mai 2010, 02:12

Re: Addon RexSearch (Fulltext-Search-Addon)

3. Jan 2013, 23:32

Hallo,
obenstehendes hat sich erledigt.

meugel
Beiträge: 38
Registriert: 9. Nov 2010, 21:12
Wohnort: suedtirol + wien
Kontaktdaten: Website

Suchergebnisse sortieren oder filtern

7. Jan 2013, 18:57

Hallo,

gibt es eigentlich eine Möglichkeit, die Liste der Suchergebnisse nach bestimmten Kriterien zu sortieren? Ich habe eine Liste von Projekten. In dieser Liste werden Projektname, Kunde und Jahr aufgelistet. Kann ich die Suchergebnisse z.B. nach Kunde oder Jahr sortieren, und diese Sortierung im Frontend ändern oder filtern?

Beispiel:

Projekt | Kunde | Jahr
Proj. 1 | Kunde 1 | 2011
Proj. 2 | Kunde 2 | 2011
Proj. 3 | Kunde 1 | 2012

Durch Klick auf z.B. Jahr wird das ganze nach der DB-Spalte "Jahr" sortiert.

Oder denke ich da zu kompliziert?

LG Meugel
LG Meugel

frood
Beiträge: 226
Registriert: 7. Okt 2008, 15:17

Re: Addon RexSearch (Fulltext-Search-Addon)

7. Jan 2013, 19:10

Hallo meugel,

Du könntest die Ergebnisse einerseits schon bei der SQL-Abfrage filtern (durch WHERE-Bedingungen), bzw. sortieren (mittels ORDER BY) oder im Ausgabemodul, indem Du die Ergebnisse erst in ein Array lädst und dieses dann vor der Ausgabe per PHP sortierst, bzw. filterst. Die erste Möglichkeit ist natürlich schlanker, da der "Ausschuss" gar nicht erst verarbeitet werden muss ...

Zum einfachen Sortieren von Tabellen bietet sich tablesorter an: http://www.tablesorter.com

Gruss, Frood

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Suchergebnisse sortieren oder filtern

7. Jan 2013, 20:22

Hallo meugel,

du musst für jede indexierte Spalte zusätzlich die id-Spalte der betreffenden Tabelle mit indexieren.

In dem Ergebnisarray von RexSearch kannst du dann alle IDs rausfiltern und, je nachdem zu welcher Tabelle die Ergebnisspalte gehört, eine weitere SQL-Abfrage aufbauen, mit der du alle Projekte bekommst.

Beispiel:

Du hast die Tabellen project und customer.

customer
id | name

project
id | name | year | customer_id

customer_id verweist dabei auf einen Eintrag aus der Tabelle customer.

Über RexSearch indexierst du jetzt alle Spalten, die durchsucht werden sollen und die id-Spalten beider Tabellen. Jetzt kannst du mit folgendem Code alle Ergebnisse durchforsten und die Projekte, die Suchergebnisse lieferten ausgeben:

Code: Alles auswählen

$rexsearch = new RexSearch(REX_CLANG_ID);
$result = $rexsearch->search($searchterm, REX_CLANG_ID);

if($result['count'] > 0)
{
  $ids = array(
    'customer' => array(0),
    'project' => array(0)
  );
  
  foreach($result['hits'] as $hit)
  {
    switch($hit['type'])
    {
      case 'db_column':
        switch($hit['table'])
        {
          case 'customer':
          case 'project':
            $ids[$hit['table']][] = $hit['values']['id'];
          break;
          
          // ...
        }
      break;
      
      // ...
    }
  }
  
  $sql = rex_sql::factory();
  $sql->setQuery("
    SELECT
      p.name,
      p.year,
      c.name as customer
    FROM project p
    LEFT JOIN customer c
      ON c.id = p.customer_id
    WHERE 1
      AND p.id IN (".implode(',', $ids['project'])."
      AND p.customer_id IN (".implode(',', $ids['customer'])."
  ");
  
  // ...
} 
Das funktioniert dann natürlich auch mit komplexeren Datenbankstrukturen. Du nutzt dann RexSearch quasi nur als Suchwerkzeug und baust deine Ausgabe immer separat zusammen. Wobei man das auch noch verfeinern kann, indem man z. B. noch die highlight-Texte der jeweiligen Ergebnisse mit abspeichert und ausgibt.
Zuletzt geändert von Xong am 7. Jan 2013, 20:26, insgesamt 1-mal geändert.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon RexSearch (Fulltext-Search-Addon)

7. Jan 2013, 20:24

Cr4nK hat geschrieben:Hallo,

und zwar funktioniert bei mir das mit dem reindex nicht.

Hab das Plugin aktiviert, aber wenn ich Daten über den Xform Table Manager aktualisiere wird kein reindex ausgeführt. Woran kann das liegen?
Das kann ich pauschal nicht sagen. Welche Redaxo- und XForm-Versionen verwendest du?
Gibt es Fehlermeldungen (und sind die auch aktiviert)?
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

meugel
Beiträge: 38
Registriert: 9. Nov 2010, 21:12
Wohnort: suedtirol + wien
Kontaktdaten: Website

Re: Suchergebnisse sortieren oder filtern

8. Jan 2013, 11:55

Hallo Frood,
hallo Xong,

erst mal vielen Dank für die schnelle Antwort. Die Lösung von Xong schaut auf den ersten Blick viel komplizierter aus, ist aber glaube ich flexibler und ausbaubar. Ich werde mir das sicherlich mal genauer anschauen und testen.
Für meinen konkreten Kunden bietet sich Froods Lösung mit dem Tablesorter (kannte ich nicht) an, da die RexSearch-Suche ja schon einwandfrei funktioniert, nun hatte der Kunde den Wunsch der Sortierbarkeit.

Danke euch beiden und lieben Gruß
Meugel
LG Meugel

Benutzeravatar
alsahh
Beiträge: 20
Registriert: 24. Feb 2011, 14:50
Kontaktdaten: ICQ

Re: Addon RexSearch (Fulltext-Search-Addon)

10. Jan 2013, 20:49

Huhu, kannst du für die nächste Version nen Spaltenfilter für die Text-Indexierung mit einbaun ? Dankö !

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon RexSearch (Fulltext-Search-Addon)

12. Jan 2013, 07:39

alsahh hat geschrieben:Huhu, kannst du für die nächste Version nen Spaltenfilter für die Text-Indexierung mit einbaun ? Dankö !
Kannst du das näher erklären?
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

dpm
Beiträge: 19
Registriert: 18. Aug 2006, 11:41

Re: Artikelgewichtung Gruppierung Cronjob Artikel-Index

13. Feb 2013, 18:11

Xong hat geschrieben:Artikel werden bei einer Änderung (Add, Edit, Delete) ja schon automatisch reindexiert, wenn du das in den Einstellungen eingestellt hast.
Hallo Xong,

bei meiner ansonsten gut funktionierenden Installation (R4.4.1) klappt das mit der automatischen Indexierung nicht. Indexiert werden soll der redaxo-Cache ohne Template, "Artikel (ADD, EDIT, DELETE) automatisch (de)indexieren" ist angekreuzt. Weder Textänderungen noch Offline-Setzen werden übernommen...

David

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon RexSearch (Fulltext-Search-Addon)

13. Feb 2013, 20:19

Kannst du mir FTP- und Backend-Zugang geben?
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 12:50

kann mir eben jemand schnell helfen? bekomme hier alle sprachen ausgespuckt anstelle der aktuelle clang. wo muss die sprachunterscheidung rein?

Code: Alles auswählen

<div id="search-results">
	<p>Ergebnisse zum Begriff: <span>„<?php echo $_REQUEST['rexsearch']; ?>“</span></p>

<?php
if (!empty($_REQUEST['rexsearch'])) {
	$rexsearch = new RexSearch();
	$result = $rexsearch->search($_REQUEST['rexsearch']);

	if ($result['count'] > 0) {
		echo '<div id="search-result-list">';

		foreach ($result['hits'] as $hit) {
			if ($hit['type'] == 'article') {
				$article = OOArticle::getArticleById($hit['fid']);

				echo '<h3>' . $article->getName() . '</h3>';
				echo '<p>' . $hit['highlightedtext'] . '<br /><a href="' . htmlspecialchars($article->getUrl()) . '">' . rtrim($REX['SERVER'], '/') . htmlspecialchars($article->getUrl()) . '</a></p>';
			}
		}
		echo '</div>';
	}
}
?>

</div>

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 13:13

Hej,

du könntest es so machen:

anstelle von
$article = OOArticle::getArticleById($hit['fid']);

das schreiben
$article = OOArticle::getArticleById($hit['fid'], $REX['CUR_CLANG']);

und ein if um das echo.

vg Thomas

frood
Beiträge: 226
Registriert: 7. Okt 2008, 15:17

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 13:16

hier steht doch alles: http://www.redaxo.org/de/wiki/index.php ... .Rexsearch
(oh, wurde schon beantwortet, sorry .... )

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 13:19

@frood: alter, wenn ich gerade zeit hätte mir den ganzen schmoder durchzulesen, hätte ich es bereits gemacht.

aber danke. http://www.redaxo.org/de/wiki/index.php ... earch#faq4 hier ist dann wohl die antwort

@thomas: danke...getArticleById lieferte aber alles korrekt...

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 13:27

@frood: sorry für die pampige reaktion, bin bissle gestresst... :?

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 13:30

Der richtige Weg ist eigentlich, die Sprach-ID gleich bei der Initialisierung von RexSearch mitzugeben.
Siehe FAQ: Wie kann ich sprachabhängig suchen?
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 13:32

RexDude hat geschrieben:@frood: alter, wenn ich gerade zeit hätte mir den ganzen schmoder durchzulesen, hätte ich es bereits gemacht.
Das ist kein Schmodder! :cry:
So eine Doku zu schreiben, dauert echt lang.

Und die FAQ erklären die häufigsten Probleme ziemlich kurz und knapp und hätten dir jetzt auch weitergeholfen. ;)
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 13:40

@xong: oh je...einmal unachtsam wegen stress gewesen :oops:

1000 dank für deinen einsatz was rexsearch und die doku angeht!!! das wollte ich dir sowieso schon seit längerem mal mitteilen.

was ich halt manchmal nicht mag, ist wenn ich erst dokus durchwühlen muss um an code zu kommen den ich dann irgendwo einbauen muss nur damit ich eigentlich eine ganz selbstverständliche geschichte eines addons nutzen kann.

aber ist ja auch egal. es geht jetzt. und ich bin wieder ein tick schlauer :)

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 13:54

RexDude hat geschrieben:@xong: oh je...einmal unachtsam wegen stress gewesen :oops:
Kein Problem. Ich nehm dir das nicht übel. :P

Das "Problem" an RexSearch ist, dass man damit so viel machen kann. Gerade was die Spezialisierung der Suchergebnisse angeht, ist wahnsinnig viel möglich.

Schau dir z.B. mal http://die-deutsche-buehne.de/Suchergeb ... ch=theater an.

Dort werden Suchergebnisse in drei verschiedenen Rubriken präsentiert. Das Suchmodul ist zwar dementsprechend komplex, aber für den Durchschnittsprogrammierer trotzdem ganz gut zu verstehen.
Aber dafür eine Doku anzulegen, lohnt sich mMn nicht besonders, weil die meisten das eh nicht lesen. Da ist das Aufwand-Nutzen-Verhältnis zu groß.

Vielleicht komme ich die nächste Zeit ja mal dazu, endlich ein besseres Suchmodul zu schreiben, was die häufigsten Anforderungen abdeckt.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 14:12

Schau dir z.B. mal http://die-deutsche-buehne.de/Suchergeb ... ch=theater an.
krass!!!
Vielleicht komme ich die nächste Zeit ja mal dazu, endlich ein besseres Suchmodul zu schreiben, was die häufigsten Anforderungen abdeckt.
das wäre echt ne vernünftige sache und dann wie xform per addon direkt installierbar. evtl. kann man vor dem modul-install noch paar option abfragen (so wie die spracheinstellung um die es jetzt bei mir ging) welche dann direkt im modul anlegt.

oder man macht so was:

Code: Alles auswählen

$rexsearch->setLangMode(...);
dann würde man hier modul code gleich sehen, wie sich rexsearch wegen den sprachen verhält und könnte es ohne in die doku schauen zu müssen umwitchen ;)

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 15:14

RexDude hat geschrieben:

Code: Alles auswählen

$rexsearch->setLangMode(...);
dann würde man hier modul code gleich sehen, wie sich rexsearch wegen den sprachen verhält und könnte es ohne in die doku schauen zu müssen umwitchen ;)
Diese Methode bietet die Klasse schon an: https://github.com/xong/rexsearch/blob/ ... .php#L1568

Vielleicht hilft dir ja auch das weiter: http://maumha.de/rex/rexsearch/doxygen/ ... earch.html
Zuletzt geändert von Xong am 1. Mär 2013, 15:51, insgesamt 1-mal geändert.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Addon RexSearch (Fulltext-Search-Addon)

1. Mär 2013, 15:23

Diese Methode bietet die Klasse schon an: https://github.com/xong/rexsearch/blob/ ... .php#L1568
oh cool...was ich aber meinte ist, dass man das gleich in das beispiel snippet irgendwo integriert. dann kann man direkt im code schon sehen wo man was drehen muss um hier ein anderes verhalten zu bekommen.

übrigens vielleicht ja auch interessant für rexsearch: ich habe mir einen alternativen Setup-Mechanismus für alle meine Addons ausgedacht. Ich nenne es SmartSetup™ ;) Man sieht hier auf einenen Blick was man für Schritte noch tun muss um das Addon zum laufen zu bringen und kann sich zudem noch entscheiden ob man die Schritte manuel ausführt (und das als anleitung versteht) oder man aufs Knöpfchen drückt (weil anleitung schon mal gelesen ;)) und das automatisiert durchführen lässt, natürlich nur da wo es geht.

kannst dir ja mal meinen rexseo fork auf github anschauen. da hab ich das bereits mal realisiert...

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

Re: Addon RexSearch (Fulltext-Search-Addon)

8. Mär 2013, 10:23

HI XONG,
gibts schon ne Möglichkeit eine root-Kat inkl. aller Child-Kats/Artikel
zu durchsuchen?

Code: Alles auswählen

<?php


$path = explode("|",$this->getValue("path").$this->getValue('article_id')."|");
if (isset($path[1])) $path1 = $path[1];
# echo $path1;


if(!empty($_REQUEST['rexsearch']))
{
    $rexsearch = new RexSearch();
    $rexsearch->searchInCategories(array($path1));
    $result = $rexsearch->search($_REQUEST['rexsearch']);

    if($result['count'] > 0)
    {
      echo '<ul class="searchresults">';
      foreach($result['hits'] as $hit)
      {
        if($hit['type'] == 'article')
        {
          $article = OOArticle::getArticleById($hit['fid']);
          echo '<li>
    <h4><a href="'.($url = htmlspecialchars($article->getUrl())).'">'.$article->getName().'</a></h4>
      <p class="highlightedtext">'.$hit['highlightedtext'].'</p>
      <p class="url"><a href="'.$REX['SERVER'].rex_getUrl($hit['fid'], $hit['clang']).'">'.$REX['SERVER'].rex_getUrl($hit['fid'], $hit['clang']).'</a></p></li>';
        }
      }
      echo '</ul>';
    } else {
    echo '<p class="noresult">Ihre Suche ergab leider keine Treffer.</p>';
    }
}
?>
oder müsste man hier:

Code: Alles auswählen

$rexsearch->searchInCategories(array($path1)); 
die rootKat-ID + alle ChildKatIDs in das Array schreiben?

Danke. grz. Chris

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

Re: Addon RexSearch (Fulltext-Search-Addon)

8. Mär 2013, 10:41

man könnte sich auch durchhangeln ;)

Code: Alles auswählen

$path = explode("|",$this->getValue("path").$this->getValue('article_id')."|");
if (isset($path[1])) $path1 = $path[1];

$search_cat_ids = array();

$cat_child = OOCategory::getChildrenById($path1);
foreach($cat_child as $cat1)
{
    $search_cat_ids[] = $cat1->getId();
    $cat1Size = sizeof($cat1->getChildren());
        
    if ($cat1Size != "0" AND $cat1->getChildren(true)) {
        foreach ($cat1->getChildren() as $cat2) {
            $search_cat_ids[] = $cat2->getId();
            $cat2Size = sizeof($cat2->getChildren());
            
            if ($cat2Size != "0" AND $cat2->getChildren(true)) {
                foreach ($cat2->getChildren() as $cat3) {
                    $search_cat_ids[] = $cat3->getId();
                    $cat3Size = sizeof($cat3->getChildren());
                    
                    if ($cat3Size != "0" AND $cat3->getChildren(true)) {
                        foreach ($cat3->getChildren() as $cat4) {
                            $search_cat_ids[] = $cat4->getId();
                            $cat4Size = sizeof($cat4->getChildren());
                        }
                    }
                }
            }
        }
    }
}

/*
echo '<pre>';
print_r($search_cat_ids);
echo '</pre>';
*/

...
$rexsearch->searchInCategories($search_cat_ids);
 
grz. Chris

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon RexSearch (Fulltext-Search-Addon)

10. Mär 2013, 02:59

darwin hat geschrieben:HI XONG,
gibts schon ne Möglichkeit eine root-Kat inkl. aller Child-Kats/Artikel
zu durchsuchen?
Jo, schon immer. Ist vielleicht ´n bisschen versteckt, aber es gibt dazu sogar ein Exempel im Beispielmodul Komplexe Suche.

Code: Alles auswählen

$rexsearch->searchInCategories(a587_getCategories(true, true, $searchinIDs));
Siehe auch: https://github.com/xong/rexsearch/blob/ ... .php#L1209 und http://www.redaxo.org/de/forum/post83192.html#p83192 ff.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Zurück zu „Allgemeines [R4]“