Page 1 of 1

Problem mit der Suche, die Zweite

Posted: Thu Apr 20, 2006 7:30 pm
by ocj
Ich habe das gleiche schon mal (auf Deutsch) im englischen Forum gefragt. Sorry dafür!

Auf meiner Seite yadayada.de gibt es neuerdings ein Problem mit der s9y-Suche. Nutze ich diese bekomme ich eine Fehlermeldung, die wie folgt lautet:
Die Suche konnte nicht wie gewünscht ausgeführt werden. Hinweis für den Administrator dieses Blogs: Der Fehler kann durch fehlende Index-Schlüssel der Datenbank verursacht werden. Auf MySQL-Systemen muss der Datenbankbenutzer-Account in der Lage sein, Index-Schlüssel zu erstellen und folgende Abfrage auszuführen:

CREATE FULLTEXT INDEX entry_idx on serendipity_entries (title,body,extended)

Die genaue Fehlermeldung der Datenbank bei der Suche lautete:

SELECT
e.id,
e.authorid,
a.realname AS author,
a.email,
ec.categoryid,
e.timestamp,
e.comments,
e.title,
e.body,
e.extended,
e.trackbacks,
e.exflag

FROM
serendipity_entries e
LEFT JOIN serendipity_authors a
ON e.authorid = a.authorid
LEFT JOIN serendipity_entrycat ec
ON e.id = ec.entryid
LEFT OUTER JOIN serendipity_entryproperties ep_no_frontpage
ON (e.id = ep_no_frontpage.entryid AND ep_no_frontpage.property = 'ep_no_frontpage')
LEFT OUTER JOIN serendipity_entryproperties ep_cache_extended
ON (e.id = ep_cache_extended.entryid AND ep_cache_extended.property = 'ep_cache_extended')
LEFT OUTER JOIN serendipity_entryproperties ep_cache_body
ON (e.id = ep_cache_body.entryid AND ep_cache_body.property = 'ep_cache_body')
LEFT OUTER JOIN serendipity_entryproperties ep_access
ON (e.id = ep_access.entryid AND ep_access.property = 'ep_access')
LEFT JOIN serendipity_entryproperties ep_sticky
ON (e.id = ep_sticky.entryid AND ep_sticky.property = 'ep_is_sticky') LEFT JOIN serendipity_category c
ON ec.categoryid = c.categoryid LEFT JOIN serendipity_authorgroups AS acl_a
ON acl_a.authorid = 1
LEFT JOIN serendipity_access AS acl_acc
ON ( acl_acc.artifact_mode = 'read'
AND acl_acc.artifact_type = 'category'
AND acl_acc.artifact_id = c.categoryid
)
WHERE
MATCH(title,body,extended) AGAINST('test')
AND isdraft = 'false' AND timestamp <= 1145511707 AND (ep_access.property IS NULL OR ep_access.value = 'member' OR ep_access.value = 'public' OR (ep_access.value = 'private' AND e.authorid = 1)) AND (ep_no_frontpage.property IS NULL OR ep_no_frontpage.value != 'true') AND (
c.categoryid IS NULL
OR ( acl_acc.groupid = acl_a.groupid OR acl_acc.groupid = 0)
OR ( acl_acc.artifact_id IS NULL

)
)
GROUP BY e.id
ORDER BY timestamp DESC
LIMIT 15

/ Can't find FULLTEXT index matching the column list

Keine Einträge vorhanden
<pre>SELECT s.*, a.realname FROM serendipity_staticpages AS s LEFT OUTER JOIN serendipity_authors AS a ON a.authorid = s.authorid WHERE MATCH(headline,content) AGAINST('test') AND s.publishstatus = 1 AND s.pass = '' GROUP BY id ORDER BY timestamp DESC</pre> / Can't find FULLTEXT index matching the column list

Found 0 static pages:
Zu testen auf http://www.yadayada.de

Wo könnte das Problem liegen?

Falk hat im Englisch-Forum schon geantwortet, daß es damit zusammenhängen könnte, daß der Index für die Suche nicht richtig gesetzt wurde.

Leider verstehe ich das nicht (kenne mich mit SQL so gut wie gar nicht aus). Die Suche hat bislang problemlos funktioniert und ich habe (wie immer :-)) nichts geändert.

Kann mir jemand auf die Sprünge helfen, wie ich den Index richtig setzen kann?

Tausend Dank im Voraus!

Posted: Fri Apr 21, 2006 7:55 am
by falk
Die Fehlermeldung sagt aus, dass der Index, der für die Suche benötigt wurde, nicht richtig gesetzt wurde, weil du verutlich nicht die Berechtigungen hast, ihn zu setzen. Ganz einfach ;-). Wenn du aber sagst, die Suche funktionierte schon mal, dann ist der Index vermutlich sonstwohin verschwunden.

Wenn du Zugriff auf phpMyAdmin hast, dann führe mal die Anweisung aus:
CREATE FULLTEXT INDEX entry_idx on serendipity_entries (title,body,extended)
Wenns nicht klappt, ist Garvin an der Reihe ;-).

Posted: Fri Apr 21, 2006 10:10 pm
by ocj
Antwort leider "Access denied".

Muß ich meine Admins fragen?

Posted: Sat Apr 22, 2006 8:18 pm
by garvinhicking
Hi ocj!

Ja, da müssen leider deine Admins ran. Sag ihnen, dass es keinen Sinn macht deinem SQL useraccount das "INDEX" Privileg zu entziehen, und man es bitte einrichten möge.

Viele Grüße,
Garvin

Posted: Sun Apr 23, 2006 11:43 am
by ocj
Danke für die Hilfe!

Ich habe nun die nötigen Privilegien und den Index erstellt.
Wenn ich nun nach einem Wort suche, das im Blog nicht enthalten ist, bekomme ich folgende Ausgabe:
Für die Suche test konnte kein Eintrag gefunden werden
Keine Einträge vorhanden
<pre>SELECT s.*, a.realname FROM serendipity_staticpages AS s LEFT OUTER JOIN serendipity_authors AS a ON a.authorid = s.authorid WHERE MATCH(headline,content) AGAINST('test') AND s.publishstatus = 1 AND s.pass = '' GROUP BY id ORDER BY timestamp DESC</pre> / Can't find FULLTEXT index matching the column list

Found 0 static pages:
(anzusehen unter www.yadayada.de)

Kann ich das irgendwie anpassen? Mir gefällt nicht, dass die SQL-Query ausgegeben wird.

In der Suche habe nichts passendes gefunden.

Posted: Sun Apr 23, 2006 7:31 pm
by garvinhicking
Hi!

Du hast auch keine fulltext index für die statischen Seiten. Dieser muss auch manuell nachgereicht werden in phpMyAdmin:

Code: Select all

CREATE FULLTEXT INDEX staticentry_idx on serendipity_staticpages (headline, content);
Viele Grüße,
Garvin

Posted: Sun Apr 23, 2006 8:43 pm
by ocj
Vielen Dank. Einen Schritt weiter.

Was mir aber jetzt noch immer nicht gefällt ( ;-) ) ist, daß die Ausgabe nun wie folgt ist:
Für die Suche test konnte kein Eintrag gefunden werden
Keine Einträge vorhanden

Found 0 static pages:
Also dreifach gemoppelt. Kann man das vielleicht noch irgendwie ändern?

Posted: Sun Apr 23, 2006 10:02 pm
by garvinhicking
Hi!

Die statische Seiten werden unabhängig von der Hauptsuche durchsucht; diese kann technisch nicht in eine kombiniert werden, da es unterschiedliche Datenquellen sind.

Daher kann es vorkommen, dass bei der einen Suche nichts gefunden wird, aber bei der anderen. Insofern wäre es dann also nicht doppelt gemoppelt. Technisch wäre es auch aufwändig eine Überprüfung einzuführen welche Suche was zurückliefert...

Viele Grüße,
Garvin

Posted: Fri Sep 29, 2006 1:06 am
by mot2001
Hallo,
das gleiche, bzw. ein aehnliches Problem hatte Lumpy auch. Er ist von selbst darauf gekommen, einen INDEX zu setzen. Aber genau wie bei ihm wird jetzt zwar kein Fehler bei der Suche angezeigt aber dafuer auch keine Ergebnisse.

garvinhicking wrote:Hi!

Du hast auch keine fulltext index für die statischen Seiten. Dieser muss auch manuell nachgereicht werden in phpMyAdmin:

Code: Select all

CREATE FULLTEXT INDEX staticentry_idx on serendipity_staticpages (headline, content);
Das habe ich jetzt zusaetzlich auch getan.
Wenn man aber bspw. nach blabla* (nicht blabla ohne Sternchen) sucht, wird der Fehler mit dem nicht gesetzten INDEX wieder angezeigt. Der INDEX ist bei mir aber gesetzt!
Und, wie schon oben geschrieben, bei SUCHE nach einem Wort, das im Blog tatsaechlich vorhanden ist, gibt die SUCHE trotzdem keine Ergebnisse aus.

Du kannst das Problem auf meiner Testseite nachvollziehen (Der www Link unten).

Posted: Sun Oct 01, 2006 10:39 pm
by garvinhicking
Hi!

Ich glaube du hast es schon rausgefunden; erst nach mehreren Einträgen klappt das ganze richtig :)

Viele Grüße,
Garvin

Posted: Sun Oct 08, 2006 11:49 pm
by Regine
Vielen Dank - dieser Beitrag hat auch mir geholfen. :wink: