• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Benutzerdefinierte Google-Suchmaschine

Schwertfisch

Carola
Registriert
06.04.07
Beiträge
114
Habe heute versucht eine Benutzerdefinierte Suchmaschine für meine Website und meinen Blog zu erstellen. Schien anfangs auch ganz einfach zu laufen, doch ist das Ergebnis absolut nicht das was mir vorschwebte.

Gewünscht hatte ich mir eine ultraschlanke, farblose und absolut schlichte Leiste wie diese hier.
Suchmaschine-1.png


Folgt man aber dem Menü zur Erstellung der kostenlosen, benutzerdefinierten Suchmaschine kommt am Ende dieser hässliche Kasten-Gadget-Alptraum dabei raus, den ich KEINESFALLS in meine Webseite oder meinen Blog einbauen werde (...lieber verzichte ich auf eine Suchfunktion). :mad:
Suchmaschine-2.png


So wie es aussieht, scheint man wieder nur mit "Insider-Tricks" und "Spezialwissen" an die schöne, schlichte Variante zu gelangen, oder ist die nur für zahlende Google-Suchmaschinen-Kunden?
 

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Schreib dir deine eigene Suche. Ist ja nicht so aufwändig, sie muss ja nur deine Seite durchsuchen.
Ich muss mal schauen, irgendwo hab ich mal eine geschrieben, zwar in CFML, lässt sich aber leicht auf PHP portieren.

Edith hats gefunden:
Code:
<cfif #CGI.REQUEST_METHOD# EQ "POST" AND #form.suche# NEQ "">
<cfset suchbegriff =form.suche>
// ",*,% entfernen und Leerzeichen durch Komma ersetzen
<cfset suchbegriff=replace(suchbegriff,"*","","ALL")>
<cfset suchbegriff=replace(suchbegriff,"%","","ALL")>
<cfset suchbegriff=replace(suchbegriff,'"',"","ALL")>
<cfset suchbegriff=replace(suchbegriff," ",",","ALL")>
// Wenn mehr als ein Suchbegriff, Array erstellen
<cfif listlen(suchbegriff,",") gt 1>
<cfset suchen= arraynew(1)>
<cfset i=1>
<cfloop list="#suchbegriff#" index="x" delimiters=",">
<cfset suchen[i]=x>
<cfset i=i+1>
</cfloop>
<cfset cur=1>
// Datenbank befragen, einaml mit Array
<cfquery name="application.suche" datasource="#application.dsn#">
SELECT content.output,pages.filename, pages.title FROM content JOIN pages ON(content.page = pages.sorter) WHERE (
<cfloop array="#suchen#" index="x">
((content.output LIKE '%#x#%') OR (MATCH(content.output) AGAINST('#x#')))
<cfif cur lt arraylen(suchen)> OR </cfif>
<cfset cur=cur+1>
</cfloop>
) AND pages.suchen = '1'
</cfquery>
// oder nach einzelnem Begriff
<cfelse>
<cfset suchen[1]=suchbegriff>
<cfquery name="application.suche" datasource="#application.dsn#">
SELECT content.output,pages.filename, pages.title FROM content JOIN pages ON(content.page = pages.sorter) WHERE (content.output LIKE '%#suchen[1]#%' OR MATCH(content.output) AGAINST ('#suchen[1]#')) AND pages.suchen = '1' 
</cfquery>
</cfif>
</cfif>
Und dann das Ergebniss verarbeiten:
Code:
// Gibt es überhaupt Einträge
<cfif #application.suche.recordcount# GT 0>
// Funktion, die n Zeichen von Links eines Strings ausgibt
<cfinclude template="fusionality/lib/fullleft.cfm">
//Ergebnis ausgeben
<cfoutput>
<h1>Suchergebnisse</h1>
// Der Schönheit wegen, ein Leerzeichen hinter jedem Komma
<p>Ihre Suchen nach <strong>#replace(suchbegriff,",",", ")#</strong> ergab #application.suche.recordcount# Treffer.</p>
</cfoutput>
<cfoutput query="application.suche">
// Suchen und ersetzen, um die Suchbegriffe hervorzuheben
<cfset text = application.suche.output>
<cfset text = REReplace(text,"<[^>]*>","","ALL")>
<cfset text = REReplace(text,"##[^>]*##","","ALL")>
<cfset r=1>
<cfloop list="#suchbegriff#" index="i">
<cfset a[r]=findnocase(i,text,0)>
<cfset r=r+1>
</cfloop>

<cfif arraysum(a) gt 1>



<cfset tmpOn       = "[;;^">
    <cfset tmpOff      = "^;;]">
    <cfset hilightitem    = "<span class=""suche"">">
    <cfset endhilight  = "</span>">


<cfloop array="#suchen#" index="x">
<cfset text = REReplaceNoCase(text,"(#x#)","#tmpOn#\1#tmpOff#","ALL")>
<cfset text = Replace(text,tmpOn,hilightitem,"ALL")>
<cfset text = Replace(text,tmpOff,endhilight,"ALL")>
</cfloop>

// Treffer auf 300 Zeichen abschneiden
<cfset crop=300>
<p>#fullleft(text,crop)#...</p>
<p><a href="#application.suche.filename#.cfm" class="intern" title="#application.suche.title#">[mehr]</a></p>
</cfif>
    </cfoutput>
    <cfelse>
//Keine Ergebnisse gefunden
    <cfoutput><p>Ihre Suche nach <strong>#form.suche#</strong> ergab keine Treffer.</p></cfoutput>
</cfif>
<cfelse>
// Kein Suchbegriff eingegeben
<cfoutput><p>Bitte geben sie einen Suchbegriff ein!</p></cfoutput>
    </cfif>
    </cfif>
Sollte eigentlich leicht auf PHP zu portieren sein. Nicht 100% Perfekt, aber funktioniert ganz gut.
 
Zuletzt bearbeitet:

schwaiger

Weigelts Zinszahler (Rotfranch)
Registriert
19.03.06
Beiträge
249
kann mich dem nur anschliessen falls du es dennoch über google möchtest schick ma nen link wo man sich dass ansehen kann...

dann bieg ich es dir schnell über css hin (is zwar auch nicht so sauber geht aber schnell) !
 

Schwertfisch

Carola
Registriert
06.04.07
Beiträge
114
Sorry, dass ich hier die Pferde wild gemacht habe, denn inzwischen habe ich den (...gut versteckten) Code gefunden, den ich suchte. Man kann da zwischen mehreren Möglichkeiten wählen. Klickt man auf die jeweilige Variante erscheint der gewünschte Code.

Optionen zum Hosten von Suchergebnissen:

• Sie können die Ergebnisse auf einer von Google-Seite hoste.
• Hosten Sie die Ergebnisse auf Ihrer Website:

  1. Für iframe – sind zwei Seiten erforderlich: eine für das Suchfeld und eine weitere für die Ergebnisse
  2. Für Overlay – ist eine Seite erforderlich; die Ergebnisse werden aber in einem modalen Overlay angezeigt.