Hallo,
obenstehendes hat sich erledigt.
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/
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/
Suchergebnisse sortieren oder filtern
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
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
Re: Addon RexSearch (Fulltext-Search-Addon)
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
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
Re: Suchergebnisse sortieren oder filtern
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:
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.
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'])."
");
// ...
}
Zuletzt geändert von Xong am 7. Jan 2013, 20:26, insgesamt 1-mal geändert.
Re: Addon RexSearch (Fulltext-Search-Addon)
Das kann ich pauschal nicht sagen. Welche Redaxo- und XForm-Versionen verwendest du?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?
Gibt es Fehlermeldungen (und sind die auch aktiviert)?
Re: Suchergebnisse sortieren oder filtern
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
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
Re: Addon RexSearch (Fulltext-Search-Addon)
Huhu, kannst du für die nächste Version nen Spaltenfilter für die Text-Indexierung mit einbaun ? Dankö !
Re: Addon RexSearch (Fulltext-Search-Addon)
Kannst du das näher erklären?alsahh hat geschrieben:Huhu, kannst du für die nächste Version nen Spaltenfilter für die Text-Indexierung mit einbaun ? Dankö !
Re: Artikelgewichtung Gruppierung Cronjob Artikel-Index
Hallo Xong,Xong hat geschrieben:Artikel werden bei einer Änderung (Add, Edit, Delete) ja schon automatisch reindexiert, wenn du das in den Einstellungen eingestellt hast.
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
Re: Addon RexSearch (Fulltext-Search-Addon)
Kannst du mir FTP- und Backend-Zugang geben?
Re: Addon RexSearch (Fulltext-Search-Addon)
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>
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Re: Addon RexSearch (Fulltext-Search-Addon)
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
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
Re: Addon RexSearch (Fulltext-Search-Addon)
hier steht doch alles: http://www.redaxo.org/de/wiki/index.php ... .Rexsearch
(oh, wurde schon beantwortet, sorry .... )
(oh, wurde schon beantwortet, sorry .... )
Re: Addon RexSearch (Fulltext-Search-Addon)
@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...
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...
Re: Addon RexSearch (Fulltext-Search-Addon)
@frood: sorry für die pampige reaktion, bin bissle gestresst...
Re: Addon RexSearch (Fulltext-Search-Addon)
Der richtige Weg ist eigentlich, die Sprach-ID gleich bei der Initialisierung von RexSearch mitzugeben.
Siehe FAQ: Wie kann ich sprachabhängig suchen?
Siehe FAQ: Wie kann ich sprachabhängig suchen?
Re: Addon RexSearch (Fulltext-Search-Addon)
Das ist kein Schmodder!RexDude hat geschrieben:@frood: alter, wenn ich gerade zeit hätte mir den ganzen schmoder durchzulesen, hätte ich es bereits gemacht.
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.
Re: Addon RexSearch (Fulltext-Search-Addon)
@xong: oh je...einmal unachtsam wegen stress gewesen
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
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
Re: Addon RexSearch (Fulltext-Search-Addon)
Kein Problem. Ich nehm dir das nicht übel.RexDude hat geschrieben:@xong: oh je...einmal unachtsam wegen stress gewesen
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.
Re: Addon RexSearch (Fulltext-Search-Addon)
krass!!!Schau dir z.B. mal http://die-deutsche-buehne.de/Suchergeb ... ch=theater an.
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.Vielleicht komme ich die nächste Zeit ja mal dazu, endlich ein besseres Suchmodul zu schreiben, was die häufigsten Anforderungen abdeckt.
oder man macht so was:
Code: Alles auswählen
$rexsearch->setLangMode(...);
Re: Addon RexSearch (Fulltext-Search-Addon)
Diese Methode bietet die Klasse schon an: https://github.com/xong/rexsearch/blob/ ... .php#L1568RexDude hat geschrieben: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 umwitchenCode: Alles auswählen
$rexsearch->setLangMode(...);
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.
Re: Addon RexSearch (Fulltext-Search-Addon)
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.Diese Methode bietet die Klasse schon an: https://github.com/xong/rexsearch/blob/ ... .php#L1568
ü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...
Re: Addon RexSearch (Fulltext-Search-Addon)
HI XONG,
gibts schon ne Möglichkeit eine root-Kat inkl. aller Child-Kats/Artikel
zu durchsuchen?
oder müsste man hier:
die rootKat-ID + alle ChildKatIDs in das Array schreiben?
Danke. grz. Chris
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>';
}
}
?>
Code: Alles auswählen
$rexsearch->searchInCategories(array($path1));
Danke. grz. Chris
Re: Addon RexSearch (Fulltext-Search-Addon)
man könnte sich auch durchhangeln
grz. Chris
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);
Re: Addon RexSearch (Fulltext-Search-Addon)
Jo, schon immer. Ist vielleicht ´n bisschen versteckt, aber es gibt dazu sogar ein Exempel im Beispielmodul Komplexe Suche.darwin hat geschrieben:HI XONG,
gibts schon ne Möglichkeit eine root-Kat inkl. aller Child-Kats/Artikel
zu durchsuchen?
Code: Alles auswählen
$rexsearch->searchInCategories(a587_getCategories(true, true, $searchinIDs));