Suche verbessern. Beispiel: Suche nach "Honig" - findet den Node "Bienenhonig" nicht. Wie verbessern?
Eingetragen von wflorian (251)
am 28.09.2008 - 12:08 Uhr in
am 28.09.2008 - 12:08 Uhr in
Hallo,
ich habe momentan das Problem dass eine Suche nach "Honig" den Node "Bienenhonig" nicht findet. Wie kann die Suche so modifiziert werden oder durch Module verbesser werden, dass die Suche auch Wörter innerhalb eines Wortes findet?
Freue mich auf Eure Antworten.
Danke schonmal und viele Grüße
Florian
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo, schau dir mal diese
am 30.09.2008 - 11:33 Uhr
Hallo,
schau dir mal diese Liste an.
http://drupalmodules.com/search/node/search+category%3A2
Sphinx und Faceted Search soll ganz interessant sein. Sonst musst du mal schauen was geht, aber es gibt eine Menge Module.
---
Viele Grüße,
Kars-T
Arbeit: comm-press
Hobbies: Tower Defense HQ, plamo.de, Blog
Viele Grüße,
Kars-T
... ich bin gerade auch mal
am 20.11.2008 - 22:40 Uhr
... ich bin gerade auch mal wieder ganz fassungslos, wie schlecht die suchergebnisse der standardsuche in drupal sind ...
hat denn der ein oder andere unter all den suchmodulen schon das ideale gefunden? und wie sieht es denn mit der performance von faceted search aus?
"Caution
Faceted Search is database-intensive. If your server can barely keep up with your traffic, this package will make things worst. Make sure to benchmark performance before deploying this system on a busy site or on a site with many thousand nodes."
gibt es da vielleicht etwas schlichteres, was aber auch den bienenhonig findet :)
sg sb
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
hallo sb, sehe ich genauso.
am 21.11.2008 - 01:42 Uhr
hallo sb,
sehe ich genauso. ich habe bisher auch noch keine wirkliche optimale lösung gefunden. faceted search kann ich mich nicht wirklich mit anfreunden.
mir ist noch apache solr aufgefallen, soll wohl einen sehr guten suchenmodus bieten, aber auch nicht ganz leicht zu integrieren: http://drupal.org/project/apachesolr
würde mich freuen, wenn andere das thema mit aufgreifen würden um eine bessere lösung für die suche zu finden...
grüße
florian
Wortteil-Suche mit Drupal's Standardsuche realisieren
am 21.11.2008 - 02:18 Uhr
Ich hätte da eine Möglichkeit anzubieten die eine Wortteil-Suche mit Drupal's Standardsuche realisiert.
Und zwar für Drupal 5 und 6.
Allerdings ist dies ein kleiner Hack des Suchmodules. Aber er funktioniert prima.
Der Hack
Öffne die Datei "search.module" und suche 2 Codezeilen und ersetze diese:
1. Zeile
$query2 = substr(str_repeat("i.word = '%s' OR ", count($arguments2)), 0, -4);
ersetzen mit
$query2 = substr(str_repeat("i.word like '%%%s%%' OR ", count($arguments2)), 0, -4);
2. Zeile
return array("d.data ". ($not ? 'NOT ' : '') ."LIKE '%% %s %%'", $count);
ersetzen mit
return array("d.data ". ($not ? 'NOT ' : '') ."LIKE '%%%s%%'", $count);
Danach cron.php aufrufen damit der Suchindex neu aufgebaut wird.
Test
Wer diesen Hack live im Einsatz testen möchte: Hier
Das ist zwar eine Views-Suche aber sie arbeitet mit Drupal's Standardsuche.
Suchbeispiele:
"nux" findet "Linux"
"inu" findet "Linux"
"tiny" findet "Tinytiny"
"nyti" findet "Tinytiny"
PS
Wer sich an dem Wort Hack stört kann statt dessen auch Patch verwenden.
================================== Tags ==================================
Suche Search Suchmodul Wortteil Wort-teil partiel partial word like
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Ich persönlich tendiere
am 21.11.2008 - 09:03 Uhr
Ich persönlich tendiere mittlerweile mehr dazu eigene Abfragen zu bauen und diese mit Views darzustellen. Alles andere lässt nicht die gewünschte Flexibilität.
---
Viele Grüße,
Kars-T
Viele Grüße,
Kars-T
quiptime schrieb Ich hätte
am 21.11.2008 - 09:12 Uhr
Ich hätte da eine Möglichkeit anzubieten die eine Wortteil-Suche mit Drupal's Standardsuche realisiert.
Und zwar für Drupal 5 und 6.
Allerdings ist dies ein kleiner Hack des Suchmodules. Aber er funktioniert prima.
Der Hack
Öffne die Datei "search.module" und suche 2 Codezeilen und ersetze diese:
1. Zeile
$query2 = substr(str_repeat("i.word = '%s' OR ", count($arguments2)), 0, -4);
ersetzen mit
$query2 = substr(str_repeat("i.word like '%%%s%%' OR ", count($arguments2)), 0, -4);
2. Zeile
return array("d.data ". ($not ? 'NOT ' : '') ."LIKE '%% %s %%'", $count);
ersetzen mit
return array("d.data ". ($not ? 'NOT ' : '') ."LIKE '%%%s%%'", $count);
Danach cron.php aufrufen damit der Suchindex neu aufgebaut wird.
Test
Wer diesen Hack live im Einsatz testen möchte: Hier
Das ist zwar eine Views-Suche aber sie arbeitet mit Drupal's Standardsuche.
Suchbeispiele:
"nux" findet "Linux"
"inu" findet "Linux"
"tiny" findet "Tinytiny"
"nyti" findet "Tinytiny"
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Das schaut interessant aus, werde ich mir mal anschauen!! Vielen Dank dafür!
@bv, Wortteil-Suche auf DC testen ?
am 21.11.2008 - 12:22 Uhr
Es könnte durchaus interessant sein den Patch für die Wortteil-Suche auf DrupalCenter zu testen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
@quiptime: wie genau hast du
am 22.11.2008 - 10:14 Uhr
@quiptime:
wie genau hast du es bewerkstelligt den beitragstyp als dropdown vor dem suchfeld zu integrieren? oder ist das standard in D6? Ich nutze selber D5.
@all:
Was mich noch interessieren würde: Ich würde gerne irgendwie einstellen können ob nur der Titel oder Titel+Beitragstext durchsucht wird, gibt es da eine Möglichkeit?
Nutze einen View als Suche.
am 22.11.2008 - 11:00 Uhr
Nutze einen View als Suche. Da kannst du dann exponierte Filter benutzen.
---
Viele Grüße,
Kars-T
Viele Grüße,
Kars-T
Hallo Kars-T, danke für die
am 23.11.2008 - 13:21 Uhr
Hallo Kars-T,
danke für die Antwort, hast du diesbezüglich ein paar Informationen? Konnte nichts finden.
Vielen Dank!
Grüße
Florian
Custom search forms with Views
am 23.11.2008 - 13:46 Uhr
wie genau hast du es bewerkstelligt den beitragstyp als dropdown vor dem suchfeld zu integrieren? oder ist das standard in D6? Ich nutze selber D5.
Antwort:
Das ist zwar eine Views-Suche aber sie arbeitet mit Drupal's Standardsuche.
Einlesen in das Thema "Eine Suche mit Views"
Views 2, eigene Suche und Ajax - geht das zusammen?
Custom search forms with Views
Hinweis
Eine mit Views erstellte Suche loest nicht automatisch das Problem mit der Wortteil-Suche. Grund: Eine Views-Suche arbeitet intern mit der Standard-Suche von Drupal.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
eventuell durch eine geschickte Gestaltung der Views-Suche ...
am 23.11.2008 - 13:54 Uhr
Was mich noch interessieren würde: Ich würde gerne irgendwie einstellen können ob nur der Titel oder Titel+Beitragstext durchsucht wird, gibt es da eine Möglichkeit?
Dies laesst sich eventuell durch eine geschickte Gestaltung der Views-Suche realisieren. Ist wohl aber eher sehr tricky wenn nicht sogar unmoeglich dies mit Views 1 unter Drupal 5 zu realisieren. Mit den erweiterten Moeglichkeiten von Views 2 unter Drupal 6 koennte es etwas einfacher oder etwas weniger tricky sein bzw. ueberhaupt erst moeglich werden.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
super, herzlichen dank.
am 23.11.2008 - 14:50 Uhr
super, herzlichen dank.
habe den kleinen hack mal
am 24.11.2008 - 15:02 Uhr
habe den kleinen hack von quiptime ausprobiert - hervorragend - vielen dank!!
ds
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
Ich muss sagen der Hack
am 24.11.2008 - 16:00 Uhr
Ich muss sagen der Hack funktioniert wirklich gut.
Und weil ja bald Weihnachten ist, hätte ich noch einen Wunsch :D
Vll. hatte ja jemand schon ähnliches versucht. Ich würde gerne bestimmte Inhaltstypen höher ranken lassen in den Suchergebnissen. Ich habe hier bereits einen Ansatz finden können: http://www.lullabot.com/articles/drupals_search_module_and_scoring_factors (in den Kommentaren), konnte es aber bisher nicht erfolgreich umsetzen. Vll. hätte ja jemand ebenso Interesse an so etwas...
hat sich wirklich bewährt
am 01.02.2009 - 10:27 Uhr
hat sich wirklich bewährt ... danke schön ...
sg ds
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
bei mir ebenso. hab den hack
am 01.02.2009 - 10:38 Uhr
bei mir ebenso. hab den hack jetzt bereits 2 monate laufen. ohne probleme.
über weitere vorschläge zur verbesserung der suche freue ich mich immer :). die suche ist bei meinem projekt fast im dauereinsatz, gibt es vll. möglichkeiten ergebnisse zu cachen? habe das gefühl das die suche doch gut an den ressourcen der servers zehrt..
baue das gerade mal wieder
am 03.02.2009 - 23:49 Uhr
baue das gerade mal wieder ein - bin ich zu blöde, oder hat sich die 2. suchen-und-ersetzen-stelle in drupal 6.9 geändert in:
// Return matching snippet and number of added words
return array("d.data ". ($not ? 'NOT ' : '') ."LIKE '%% %s %%'", $num_new_scores, $num_valid_words);
}
ich nehme mal an, so sollte es dann aussehen - oder?
// Return matching snippet and number of added words
return array("d.data ". ($not ? 'NOT ' : '') ."LIKE '%%%s%%'", $num_new_scores, $num_valid_words);
}
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
Hey zusammen! Habe den
am 02.03.2009 - 13:21 Uhr
Hey zusammen!
Habe den oberen Hack in meine Drupal 6.10 (www.jz-oz.de) eingebaut und cron.php druchlafen lassen. Aber leider funktionoiert die Wortteilsuche immer noch nicht! =(
Hab ich irgendwas übersehen?!
Bitte um Hilfe!
Danke im Voraus!
Chipy
Hack Wortteil-Suche auch mit D 6.10
am 31.03.2009 - 00:59 Uhr
Habe den Hack mit der Wortteilsuche in 6.10 getestet. Er funktioniert.
Allerdings kann man meine beiden urspruenglich geposteten Codezeilen nicht verwenden. Die 2. hat sich geaendert.
Datei "search.module", Drupald 6.10:
1.
Suchen:
// Build word-index conditions for the first pass
$query2 = substr(str_repeat("i.word = '%s' OR ", count($arguments2)), 0, -4);
Ersetzen mit:
$query2 = substr(str_repeat("i.word like '%%%s%%' OR ", count($arguments2)), 0, -4);
2. Suchen:
// Return matching snippet and number of added words
return array("d.data ". ($not ? 'NOT ' : '') ."LIKE '%% %s %%'", $num_new_scores, $num_valid_words);
Ersetzen mit:
return array("d.data ". ($not ? 'NOT ' : '') ."LIKE '%%%s%%'", $num_new_scores, $num_valid_words);
Danach nicht nur einfach cron.php aufrufen sondern vorher den Suchindex "zerstoeren" in dem in der Administration admin/settings/search der Button "Seite neu indizieren" geklickt wird.
Nach diesem Klick ist der Indizierungsstatus auf 0. Nun wird mehrfach cron.php aufgerufen. Mehrfach weil mit einem einzelnen Cronlauf in der Regel die Website nicht zu 100% indiziert wird. Man kann nach jedem Cronlauf die Seite admin/settings/search neu aufrufen um das Voranschreiten der Indizierung in Richtung 100% zu verfolgen.
Erfolgreiches hacken wuenscht
------------------------
Quiptime Group
Da geht noch was.
Der hack erzeugte bei mir
am 01.04.2009 - 13:37 Uhr
Der hack erzeugte bei mir stellenweise seltsame Suchergebnisse, nämlich das Nodes mehr als einmal in den Suchergebnissen vorkamen.
________________________________________________________________________
Drupal-Entwicklung und Web-Design in Darmstadt || www.brightsolutions.de
Ich habe den Hack nochmal verändert
am 05.06.2009 - 10:56 Uhr
Hi zusammen,
ich habe den Hack noch ein wenig geändert, da m.E. nicht immer mit Wort-Wildcard gesucht werden soll.
$query2 = substr(str_repeat("i.word = '%s' OR ", count($arguments2)), 0, -4);
ändern in
$query2 = substr(str_repeat("i.word like '%s' OR ", count($arguments2)), 0, -4);
Hier ist lediglich das "=" der Abfrage durch ein "like" geändert.
define('PREG_CLASS_SEARCH_EXCLUDE',
'\x{0}-\x{2f}\x{3a}-\x{40}\x{5b}-\x{60}\x{7b}-\x{bf}\x{d7}\x{f7}\x{2b0}-'.
ändern in
define('PREG_CLASS_SEARCH_EXCLUDE',
'-\x{2f}\x{3a}-\x{40}\x{5b}-\x{60}\x{7b}-\x{bf}\x{d7}\x{f7}\x{2b0}-'.
Hier ist das erste "\x{0}" entfernt, das maskiert das "*" in einem Suchstring ansonsten aus
function search_simplify($text) {
...
$text = preg_replace('/['. PREG_CLASS_SEARCH_EXCLUDE . ']+/u', ' ', $text);
...
return $text;
diese drei Stellen der Funktion ändern in
function search_simplify($text, $preg_class_search_exclude_extra = '') {
...
$text = preg_replace('/['. $preg_class_search_exclude_extra . PREG_CLASS_SEARCH_EXCLUDE . ']+/u', ' ', $text);
...
return str_replace('*', '%%', $text);
Das wird gebraucht, damit die Indizierungsaufrufe auch das "*" wegschneiden können, die Suchanfragen allerdings nicht.
Zuletzt muss noch in der Funktion "function search_index_split($text)" der Aufruf von search_simplify geändert werden
$text = search_simplify($text);
ändern in
$text = search_simplify($text, '\x{0}');
damit hier wie gesagt auch das "*" zeichen ausmaskiert wird.
nach einer Neu-Indizierung kann dann gesucht werden mit:
automation = sucht nur das wort (wie gehabt)
auto* = beginnend mit
*tion = endend auf
*tomat* = wortteil
Ich habe das mit D5 gemacht, aber D6 sollte genauso sein.
Tom
gebe bei mir gerade "die
am 10.06.2009 - 13:50 Uhr
gebe bei mir gerade "die zeit" ein - gelistet werden alle einträge mit "die" und alle mit "zeit" - hier wird also nicht automatisch kombinert.
ich hätte zumindest gerne nur nodes in denen "die" und "zeit" vorkommen?
ginge das??
und btw: werden die titel eigentlich mittlerweile mit indiziert?
danke sachbearbeiter
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
Dein Problem kann ich nicht nachvollziehen
am 10.06.2009 - 18:23 Uhr
Ich habe es gerade nochmal bei mir getestet (Siehe meinen HickHack oben):
Also Suche nach "die zeit" ergibt bei mir nur artikel die sowohl das wort "die " als auch "zeit" enthalten. Alternativ geht bei mir sonst "die OR zeit" welches dann ent- oder -weder beiträge findet. Mit meinem Hack kann dann auch noch nach "die OR zeit*" bzw. "die OR *zeit*" gesucht werden, was auch Wortteile wie EisZEIT oder ZEITen oder AbgabeZEITen findet.
M.E. sind da alle Wünsche voll erfüllt, einzig für die Suche nach "die zeit" als festem Wort-Teil, sprich immer das Wort "die" gefolgt von dem Wort "zeit", bräcuhte man noch eine Anpassung. Ist aber auch eine Kleinigkeit.
Tom
Und "ja", die Titel werden indiziert bzw. abgefragt
am 10.06.2009 - 18:26 Uhr
und bei mir dann auch mit Wort-Teilsuche.
Tom
@tom - entschuldige - wohl
am 12.06.2009 - 09:20 Uhr
@tom - entschuldige - wohl ein kleiner irrläufer meinerseits - kann es jetzt auch nicht reproduzieren - scheint allet o.k. zu sein - vielleicht war meine indizierung nicht fertig oder whatever ...
danke SG IS
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
Hast du mal geschaut, was
am 12.06.2009 - 09:26 Uhr
Hast du mal geschaut, was die im D7 Core mit der Suche machen? Wenn sich da nichts ändert, würde ich das für eine gute Erweiterung halten.
---
Viele Grüße,
Kars-T
Viele Grüße,
Kars-T
Eine gute Lösung: Das Lucene Modul
am 26.03.2010 - 21:22 Uhr
Ich habe das Lucene- Module installiert, jetzt kann ein Inhalt mit Wildcards gefunden werden: wor* ergibt alles was mit wor beginnt.
Was verändert sich mit diesem Hack?
am 19.05.2010 - 21:43 Uhr
Hallo,
ich baue diesen Hack für die Wortteil-Suche auch gerade ein. Wird da eigentlich der Suchindex viel größer? Es geht hier um 6000 zu indizierenden Elementen.
Nachteile des Hacks?
am 20.05.2010 - 22:40 Uhr
Also bei mir ist die Suche jetzt nach dem Wortteil-Hack sehr langsam, aber leider weiß ich nicht, ob es zuvor auch so langsam war, das zu testen habe ich versäumt.
Weiters weiß ich auch nicht, ob sich die Datenbanktabellen stark vergrößert haben (search...), da ich vorher die Größen nicht angesehen habe. Das jetzt alles noch einmal zu machen von vorne wäre zu aufwändig.
Wortteilsuche
am 03.01.2011 - 21:58 Uhr
Ich hab dafür das Modul Finder benutzt.
Das schlägt direkt bei der Eingabe Ergebnisse vor
http://drupal.org/project/finder
Drupal Programmierer Hamburg: https://stevenschulz.net
evtl. auch interessant:
am 04.01.2011 - 14:09 Uhr
evtl. auch interessant: http://drupal.org/project/de_stemmer
Ich hole mal ne Leiche aus
am 11.03.2011 - 14:05 Uhr
Ich hole mal ne Leiche aus dem Keller, weil ich denke dass das hier ganz gut rein passt.
Ich habe das Lucene Search Modul implementiert. Funktioniert auch einigermaßen gut, ABER:
Wenn ich irgendwo das Wort Tomate stehen habe und nach *mate suche, dann sagt er immer "At least 3 non-wildcard characters are required in a term." Und genau das sagt er auch bei jeder Suche, bei der vorne ein * steht. Wenn das * hinten steht, gibts keine Probleme. Woran liegt das?
D7 Wortteil-Suche und Umlaut-Suche
am 20.08.2013 - 17:42 Uhr
Wortteil-Suche
Um eine Wortteil-Suche mit Drupal 7 zu realisieren kann man diesen Patch verwenden:
https://drupal.org/files/search-partial_words_hack-498752-19.patch
Nach dieser Codeaenderung ist es nicht notwendig, den Suchindex neu aufzubauen um die Wortteil-Suche verwenden zu koennen.
Nach meinen Tests wird der Suchindex (Tabelle search_index) nicht vergroessert.
Getestet mit Drupal 7.23.
Umlaut-Suche
Um eine Umlaut-Suche mit Drupal 7 zu realisieren kann man zusaetzliche Module verwenden:
Search API
Nach Aktivierung des Basismodules Search API die Website neu indizieren (Index neu aufbauen) und schon kann man nach Inhalten mit Umlauten suchen.
Da geht noch was.
Mit diesem Patch funktioniert
am 10.09.2013 - 15:52 Uhr
Mit diesem Patch funktioniert das ganze einwandfrei, ABER : damit pfusche ich ja im Core rum und beim nächsten Update ist das ganze wieder weg - wie kann ich das verhindern?
Issue zu dem Thema auf
am 10.09.2013 - 16:49 Uhr
Issue zu dem Thema auf Drupal.org aufmachen und hoffen, daß es in den Core eingebaut wird. Sonst hilft Dir nur, es für Dich zu dokumentieren, damit Du es beim nächsten Update wieder einbauen kannst.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *