Boardunity Ratgeber Forum

Boardunity Ratgeber Forum (https://boardunity.de/)
-   Entwicklung und Konzeption sozialer Software (https://boardunity.de/entwicklung-konzeption-sozialer-software-f76.html)
-   -   Brainstorming - gemeinsamer Suchindex (https://boardunity.de/brainstorming-gemeinsamer-suchindex-t4388.html)

Jan Stöver 25.09.2006 09:18

Brainstorming - gemeinsamer Suchindex
 
Hallo zusammen!

Ich habe derzeit ein kleines Problem, dessen Lösung mir nicht zufriedenstellend gelingen möchte.

Wenn man verschiedene Systeme kombiniert, die jeweils einen eigenen Suchindex bieten, dann ist es nicht wirklich einfach, eine systemübergreifende oder nennen wir es globale Suche bereitzustellen.

Im meinem Fall sind dies z.B. Wordpress und vBulletin. Jedes System hat seine eigene Suchfunktion. Möchte man im Template jetzt eine globale Suche anbieten, hilft alles nichts. Ausweichen auf z.B. ein Google oder Yahoo Suchfeld bzw. ein eigenes Spiderscript müssen her.

Google und/oder Yahoo haben den Nachteil, dass bei weitem nicht alles im Index landet. Ein eigener Spider ist mit Kanonen auf Spatzen geschossen. Eine getrennte Suche - Wordpress in Wordpress und vBulletin im vBulletin finde ich eher unpraktisch.

Vorschläge? Ideen?

Björn 25.09.2006 10:14

Die Suche so erweitern, dass das Script beide Suchen "startet" und dann die ergebnisse ausgibt.
Ob das allerdings so doll ist?! ka..
MfG

wurstbrot 26.09.2006 10:25

Das Problem an dem gleichzeitigen Starten ist aber, dass die Sortierung nach Relevanz nicht wirklich toll ist, du bekommst dann Suchergebnisse angezeigt, die nach Rubrik getrennt sind (unter Umständen nicht so toll.

Das Problem löst nur ein gemeinsamer Index. Den musst du halt erstellen. Lösungen gibt es hierfür einige, im aktuellen PHP-Magazin wird eine mit Lucene beschrieben (ok, eher angerissen). Verwendet wird dabei unter anderem die Java Bridge (Gegensätze ziehen sich an - PHP Magazin - Professional PHP Development - Online-Artikel *)

Wurstbrot

tapete 05.12.2006 18:49

Ich würde auch sagen, ein eigener Index muß her. Schreibst ne Funktion, der man SeitenURL und Text übergeben muß und die speichert das dann in ner Tabelle. Die Funktion bindest du dann bei beiden Programmen ein. Oh je, daß klingt irgendwie neunmalklug :O

Also ich hab das für meine Seite auch gemacht. Nicht weil ich zwei Systeme miteinander verbinden mußte, sondern weil ich es nicht mit ansehen konnte, wenn MySQL sämtliche Textfelder nach einem Wort durchsuchen muß ^^

Wenn du das so machen willst, könnte ich dir paar Tips oder Code geben.

wurstbrot 06.12.2006 13:29

Das Problem bei der ganzen Geschichte sind die unterschiedlichen Rechte. Mach mir jetzt schon länger nen Kopf, wie man es erreichen könnte, dass die Benutzerrechte berücksichtigt werden:

Sagen wir, wir haben Benutzer 1, welcher die Beiträge aus Forum 1 lesen darf, Benutzer 2 darf das aber nicht.

So, die Frage ist jetzt: wie erreicht man die Berücksichtigung der Rechte derart, dass schon vor dem Liefern der Datenbankergebnisse sichergestellt wird, dass nur Seiten mit entsprechenden Rechten angezeigt werden.

Einfach alle Daten in PHP nach Rechten prüfen, halte ich für nicht optimal. Der Grund: Wenn ich 50 Ergebnisse anzeigen will, wie stell ich sicher, dass auch wirklich 50 und nicht weniger Daten vorhanden sind? Ich müsste also mehr Daten abrufen. Aber wieviel? 100? Selbst das kann dazu führen, dass weniger abgefragt werden. Ne Schleife? Das kann ganz schön Performanz-Lastig werden.

Ne Idee fehlt mir hier derzeit völlig. Es ist ja nicht damit getan, eine Wortliste zu erstellen oder zu verwenden, es müssen auch Systemeigenheiten berücksichtigt werden.

Wurstbrot


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24