[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από charavge » 16 Νοέμ 2009 14:56

Έχω βρει ένα πολύ απλό πρόγραμμα το οποίο βγάζει κώδικα για search engine από τη σελίδα:
http://www.buildwebsite4u.com/tools/site-search.shtml

Αυτός ο κώδικας δημιουργεί, όπως θα δείτε παρακάτω, λέξεις κλειδιά όλων των σελίδων και σε αναγκάζει να τις "πετάξεις" όλες μέσα στη σελίδα σου. Αυτό σημαίνει ότι εάν έχεις 100 σελίδες, θα έχεις ένα κατεβατό μέσα στη σελίδα σου το οποίο δημιουργεί 2 θέματα:
1) εάν προσθέσεις στο χώρο σου μία επιπλέον σελίδα, θα πρέπει να ξαναπεράσεις τον κώδικα μέσα σε κάθε μία από τις 10, 20...100 σελίδες που μπορεί να έχεις για να μπορεί να βρεθεί από τις άλλες.
2)δημουργεί σκουπίδια μέσα στη σελίδα και δεν είναι ευανάγνωστος ο κώδικάς σου.

Το θέμα μου είναι λοιπόν το εξής:
1) Μπορώ να βάλω αυτές τις λέξεις κλειδιά μέσα σε μία άλλη, ουδέτερη σελίδα από όπου να τις καλεί κάθε site και να μη χρειάζεται να μπαίνω στην παραπάνω διαδικασία;
2) Μου βγάζει τα links των σελίδων που είναι καταχωρημένες κάθε φορά κατά το φόρτωμα της σελίδας, κάτι σαν sitemap, αλλά εγώ θέλω αρχικά να φαίνεται μόνο η μηχανή αναζήτησης.

Το πρόβλημα μου είναι ότι δε γνωρίζω javascript και php, αλλά τα πιάνω σχετικά εύκολα.
Αν μπορεί και θέλει κάποιος να μου εξηγήσει τι κάνει το κάθε κομμάτι συνολικά.

Ευχαριστώ εκ των προτέρων.


Ο κώδικας:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Site Search</title>
<style type="text/css">
<!--
body {color:#000000;font:10pt Verdana,Tahoma,Arial,Helvetica,sans-serif}
em {color:#0000FF;font:bold 10pt Verdana,Tahoma,Arial,Helvetica,sans-serif}
b {font-weight:bold}
-->
</style>
<script language="JavaScript">
<!--
function f(fn,ft,fd){
this.fn=fn;
this.ft=ft;
this.fd=fd;
}
var Fs=new Array (
new f("contactEn.html","The cretan snail 'Helix Aspersa'","Contact us for information."),new f("indexEn.html","The cretan snail 'Helix Aspersa'","Production and commerce of cretan snail."),new f("mapEn.html","The cretan snail 'Helix Aspersa'","Search here our site content for what you need."),new f("searchEn.html","The cretan snail 'Helix Aspersa'","Search here our site content for what you need."));
var L=1, D=1, M=1, Ws=new Array (
"1px&","2009&%$#","224&","3132&","7000&","about$","acres$","ads&","after%","align&",
"all&%$#","an%$#","and&%#$","appendchild&","are%$","arrange#","arrangement%","aspersa&%$#","autocomplete&","background&",
"because$","best&%$#","beverages$","border&","box&","breed$","catch&","cereals$","charavge&%$#","click#",
"color&","com&","combined&","commerce&%$#","complete&","contact&%$#","contains$","content&","cook&%$#","copyright&%$#",
"createelement&","cretan&%#$","crete&%#$","crushed$","cs&","db&","diet$","dishes&%$#","doc&","document&",
"download&%$#","enjoy&%$#","environment$","exact&%$#","extent$","extra&%$#","facilities#","festivals&%$#","ffcc00&","field&",
"find&%$#","for&$%#","four$","function&","getelementbyid&","getelementsbytagname&","google&%$#","grow$","head&","helix&%$#",
"heraklion$","here%#","home&%$#","html&","http&","id&","if&$#","in&%#$","information&#","input&",
"inside$","into&","is%$","it$","javascript&","js&","keyword&","larger%","latest&%$#","left&",
"loaded&","mail#","map&$#%","maps&%$#","material&%$#","mclassic&","mix$","mode&","molosky&","natural$",
"need&","news&%$#","now&%$#","of&%#$","off&","on&%$#","onload&","onreadystatechange&","open$","or#",
"order#","our%#&$","outside$","parks$","pex&","photos&%$#","place&%$#","predictad&","predictor&","production&%$#",
"readystate&","recipies&%$#","reproduce$","reserved&%$#","rights&%$#","runpredictor&","script&","scripts&","search$#%&","select&",
"send#","setattribute&","several&%#$","show&","site$#%&","skin&","snail&%#$","snails&%#$","solid&","spot%",
"src&","supplemented$","teaser&","text&","that$","the#%$&","to$#","totaly$","true&","try&",
"type&","typing&","us&%$#","userid&","var&","view%","visit%#","want#","we$","website$",
"welcome%$","while$","wide$","with$#","www&","you&%#","your#","ελληνικά&%$#");
var FN=Fs.length, WN=Ws.length, BW=window.opener;
var AR=new Array(FN), AI=new Array(FN), M2=FN>1563;
function Let(c){return c>='a'&&c<='z'||c>='0'&&c<='9'||c>'';}
function Dig(s){
for(var i=0;i<s.length;++i){
var c=s.charAt(i);
if(c>='0'&&c<='9') return 0;
}
return 1;
}
function C(l){
if(BW && !BW.closed) {BW.location.href=l;BW.focus();}
else BW=window.open(l,"");
}
function AW(s){
var i,n;
for(i=0;Let(s.charAt(i));++i);
if(s.charAt(i)==' ') ++i;
for(var m=1;i<s.length;){
n=s.charCodeAt(i++)-35;
if(n<0) n=(n+20)*92+s.charCodeAt(i++)-35;
else if(M2) n=n*92+s.charCodeAt(i++)-35;
AI[n]+=m++;
}
}
function MK(s,n){
var i;
for(i=0;i<FN;++i) AI=0;
s=s.replace(/\*/g,'[^ ]*');
s=s.replace(/\?/g,'[^ ]');
s = '^'+s;
for(i=0;i<WN;++i) if(Ws.search(s)==0) AW(Ws);
for(i=0;i<FN;++i) if(n) AR*=AI; else AR=AI;
}
function MT(){
var c,i,n,t="",ss="",s=document.forms[0].s.value.toLowerCase()+' ';
for(i=0;i<FN;++i) AR=M;
for(i=n=0;i<s.length;++i){
c=s.charAt(i);
ss+=(c=='<')?"&lt;":c;
if(Let(c)||c=='*'||c=='?') t+=c;
else {
if(t.length>L&&(D||Dig(t))) MK(t,n++);
t="";
}
}
t='You searched for "<b> '+ss+'</b>".<p>\n';
for(n=0;;++n){
var m=0,im=-1;
for(i=0;i<FN;++i) if(AR>m) m=AR[im=i];
if(im<0){
if(n==0) t+="<div align=center><p><b>No results found.</b></div><p>\n";
break;
}
AR[im]=0;
t+=("<b>"+(n+1)+".</b> <a href='javascript:C(\""+Fs[im].fn+"\")'>"+Fs[im].ft+"</a><br>\n"+Fs[im].fd+"<p>\n");
}
return t;
}
function NS(){
if(document.getElementById) document.getElementById('txt').innerHTML=MT();
else document.forms[0].submit();
return false;
}
function SS(){
if(location.search){
var o="€&#8218;&#402;&#8222;&#8230;&#8224;&#8225;ˆ&#8240;Š&#8249;ŒŽ‘’""&#8226;&#8211;&#8212;˜&#8482;š&#8250;œžŸ ΅Ά£&curren;&yen;¦§¨©&#63737;«¬­&reg;―°±²³΄&micro;&para;·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ&#63738;ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ&#63739;";
var t="";
for(var i=3; i<location.search.length; t+=c) {
var c=location.search.charAt(i++);
if(c=='+') c=' ';
if(c=='%') {
var v=parseInt(location.search.substring(i,i+2),16);
if(v<128) c=String.fromCharCode(v);
else c=o.charAt(v-128);
i+=2;
}
}
document.forms[0].s.value=t;
}
}
//-->
</script>
</head>
<body>
<form>
<table width=100% cellpadding=5 style="background-color:#EFF;border:2px solid #069"><tr><td align=center>
<em>Site Search</em><br>
<input type=text name="s" size=24 onKeyDown="if(event.keyCode==13)return NS()">&nbsp;<input type="Button" value="Go!" onClick="return NS()">
</td></tr></table>
</form>
<script>
<!--
if(window.opener) document.write("<div align=center><a href='javascript:window.close()'>Close window</a></div><p>");
//-->
</script>
<div id=txt>
<script>
<!--
SS();
document.write( MT() );
//-->
</script>
</div>
<div align=center>
<p>
<script>
<!--
if(window.opener) document.write("| <a href='javascript:window.close()'>Close</a>");
//-->
</script>
</div>
</body>
</html>

[/quote]
Τελευταία επεξεργασία από το μέλος charavge την 17 Νοέμ 2009 17:10, έχει επεξεργασθεί 1 φορά συνολικά.


Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από charavge » 17 Νοέμ 2009 01:04

Ο παραπάνω κώδικας παράγεται από ένα πρόγραμμα όπου το μόνο που κάνεις είναι ότι του δηλώνεις τις σελίδες που θες να συμπεριλάβει στην αναζήτηση και αυτό κατόπιν βρίσκει τις λέξεις κλειδιά, φτιάχνει έναν πίνακα και τις πετάει μέσα.
Basilakis έγραψε:Για δες εδώ
http://www.freestuff.gr/forums/viewtopic.php?t=15869
Όπως εξήγησα δεν ξέρω Javascipt, ενώ το συγκεκριμένο παράδειγμα μου φάνηκε διαφορετικό από αυτό που ζητάω. Μπορώ να καταλάβω σε γενικές γραμμές κάποια πράγματα που είναι ίδια σε άλλες γλώσσες, π.χ. τους πίνακες ή τις μεταβλητές, αλλά επειδή δε γνωρίζω τι κάνει κάθε εντολή, δε μπορώ να καταλάβω τη λειτουργία. Αλλάζει λίγο η λογική από γλώσσα σε γλώσσα, αλλιώς όλοι θα μπορούσαμε να κάνουμε τα ίδια πράγματα απλώς γνωρίζοντας μία γλώσσα προγραμματισμού.

Παρακάτω όπως θα δεις υπάρχει ένας πίνακας όπου είναι δηλωμένες όλες οι λέξεις κλειδιά που βρήκε το πρόγραμμα αυτό σε κάποιες σελίδες.

Εγώ αυτό που χρειάζομαι είναι αν γίνεται αυτές τις λέξεις να τις περάσω σε ένα αρχείο π.χ. κειμένου ή σελίδα php και από εκεί να τις τραβάει η κάθε σελίδα με μία εντολή στη θέση του παρακάτω κώδικα που ανακτά αυτές τις λέξεις από το αρχείο αυτό. Έτσι, όταν προσθέτω μία νέα σελίδα, απλώς να πηγαίνω να συμπληρώνω μόνο το αρχείο με τις λέξεις κλειδιά. Αν, λοιπον, χρειάζεται και κάποια επιπλέον τροποποίηση ο κώδικας αυτός για ν ιστοσελίδες, περιμένω τις υποδείξεις.

Από όσο μπορώ να καταλάβω, για κάποιον που γνωρίζει Javascript δεν πρέπει να είναι κάτι ιδιαίτερα δύσκολο να κάνει αυτήν την τροποποίηση. Εκτός αν είναι ανέφικτο με αυτή τη γλώσσα και πρέπει να δω κάτι άλλο.

Δεν είναι καθόλου βολικό εάν έχω 10 σελίδες και αλλάξω κάτι να ξαναπερνάω τον κώδικα αυτό σε κάθε σελίδα ξεχωριστά.
var L=1, D=1, M=1, Ws=new Array (
"1px&","2009&%$#","224&","3132&","7000&","about$","acres$","ads&","after%","align&",
"all&%$#","an%$#","and&%#$","appendchild&","are%$","arrange#","arrangement%","aspersa&%$#","autocomplete&","background&",
"because$","best&%$#","beverages$","border&","box&","breed$","catch&","cereals$","charavge&%$#","click#",
"color&","com&","combined&","commerce&%$#","complete&","contact&%$#","contains$","content&","cook&%$#","copyright&%$#",
"createelement&","cretan&%#$","crete&%#$","crushed$","cs&","db&","diet$","dishes&%$#","doc&","document&",
"download&%$#","enjoy&%$#","environment$","exact&%$#","extent$","extra&%$#","facilities#","festivals&%$#","ffcc00&","field&",
"find&%$#","for&$%#","four$","function&","getelementbyid&","getelementsbytagname&","google&%$#","grow$","head&","helix&%$#",
"heraklion$","here%#","home&%$#","html&","http&","id&","if&$#","in&%#$","information&#","input&",
"inside$","into&","is%$","it$","javascript&","js&","keyword&","larger%","latest&%$#","left&",
"loaded&","mail#","map&$#%","maps&%$#","material&%$#","mclassic&","mix$","mode&","molosky&","natural$",
"need&","news&%$#","now&%$#","of&%#$","off&","on&%$#","onload&","onreadystatechange&","open$","or#",
"order#","our%#&$","outside$","parks$","pex&","photos&%$#","place&%$#","predictad&","predictor&","production&%$#",
"readystate&","recipies&%$#","reproduce$","reserved&%$#","rights&%$#","runpredictor&","script&","scripts&","search$#%&","select&",
"send#","setattribute&","several&%#$","show&","site$#%&","skin&","snail&%#$","snails&%#$","solid&","spot%",
"src&","supplemented$","teaser&","text&","that$","the#%$&","to$#","totaly$","true&","try&",
"type&","typing&","us&%$#","userid&","var&","view%","visit%#","want#","we$","website$",
"welcome%$","while$","wide$","with$#","www&","you&%#","your#","ελληνικά&%$#");
Ευχαριστώ για τη βοήθεια σου και εάν μπορεί κάποιος να μου δείξει πώς μπορεί να διαμορφωθεί ο παραπάνω κώδικας θα ήμουν ιδιαίτερα ευγνώμων...

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από Basilakis » 17 Νοέμ 2009 11:17

Αν κατάλαβα καλά απλώς θέλεις να γλυτώσεις να κάνεις όλο αυτό το copy paste?

Τα πράγματα είναι εύκολα...

Κώδικας: Επιλογή όλων

var L=1, D=1, M=1, Ws=new Array &#40;
"1px&","2009&%$#","224&","3132&","7000&","about$","acres$","ads&","after%","align&",
"all&%$#","an%$#","and&%#$","appendchild&","are%$","arrange#","arrangement%","aspersa&%$#","autocomplete&","background&",
"because$","best&%$#","beverages$","border&","box&","breed$","catch&","cereals$","charavge&%$#","click#",
"color&","com&","combined&","commerce&%$#","complete&","contact&%$#","contains$","content&","cook&%$#","copyright&%$#",
"createelement&","cretan&%#$","crete&%#$","crushed$","cs&","db&","diet$","dishes&%$#","doc&","document&",
"download&%$#","enjoy&%$#","environment$","exact&%$#","extent$","extra&%$#","facilities#","festivals&%$#","ffcc00&","field&",
"find&%$#","for&$%#","four$","function&","getelementbyid&","getelementsbytagname&","google&%$#","grow$","head&","helix&%$#",
"heraklion$","here%#","home&%$#","html&","http&","id&","if&$#","in&%#$","information&#","input&",
"inside$","into&","is%$","it$","javascript&","js&","keyword&","larger%","latest&%$#","left&",
"loaded&","mail#","map&$#%","maps&%$#","material&%$#","mclassic&","mix$","mode&","molosky&","natural$",
"need&","news&%$#","now&%$#","of&%#$","off&","on&%$#","onload&","onreadystatechange&","open$","or#",
"order#","our%#&$","outside$","parks$","pex&","photos&%$#","place&%$#","predictad&","predictor&","production&%$#",
"readystate&","recipies&%$#","reproduce$","reserved&%$#","rights&%$#","runpredictor&","script&","scripts&","search$#%&","select&",
"send#","setattribute&","several&%#$","show&","site$#%&","skin&","snail&%#$","snails&%#$","solid&","spot%",
"src&","supplemented$","teaser&","text&","that$","the#%$&","to$#","totaly$","true&","try&",
"type&","typing&","us&%$#","userid&","var&","view%","visit%#","want#","we$","website$",
"welcome%$","while$","wide$","with$#","www&","you&%#","your#","ελληνικά&%$#"&#41;;
τον παραπάνω κώδικα τον περνάς σε ένα .js αρχείο και εκεί, μέσα σε κάθε σελίδα που φτιάχνεις

Κώδικας: Επιλογή όλων

<script type="text/javascript" src="your.js"> </script>
Είναι απο τα βασικά της Javascript κάτι τέτοιο. Καλό θα ήταν για την δικιά σου ευκολία πριν λερώσεις τα χέρια σου με κώδικα να ρίξεις λίγο διάβασμα.

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από dimsis » 17 Νοέμ 2009 11:39

Μια φιλική πρόταση. Ρίξε μια ματιά εδώ: http://www.google.com/cse/?v
Η ίδια η google σου δίνει τη δυνατότητα να ενσωματώσεις τη δική της μηχανή αναζήτησης για το site σου όπως κάνει και εδώ το freestuff: http://www.freestuff.gr/forums/search.php (στο πρώτο πεδίο που γράφει "Google Προσαρμοσμένη αναζήτηση".
Έτσι δεν μπλέκεις ούτε με javascript, ούτε με κώδικα που πρέπει να αλλάζεις κάθε τόσο προσθέτοντας keywords κλπ

Αν νομίζεις πως μπορεί να σου κάνει τη δουλειά που θέλεις, δες και εδώ: http://www.askdavetaylor.com/how_to_add ... _site.html

Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από charavge » 17 Νοέμ 2009 16:36

Basilakis έγραψε:Αν κατάλαβα καλά απλώς θέλεις να γλυτώσεις να κάνεις όλο αυτό το copy paste?
Πολύ σωστά. Δοκίμασα να αντικαταστήσω τις μεταβλητές και τον πίνακα με τις λέξεις στο κομμάτι της javascript που έχω με το κομμάτι του κώδικα που μου έδωσες,

Κώδικας: Επιλογή όλων

<script type="text/javascript" src="your.js"> </script>
τα έβαλα αυτά μέσα σε ένα αρχείο κειμένου και τα αποθήκευσα σε ένα αρχείο .js.
Δε δουλεύει. Σαν να τα έσβησα εντελώς.
Μήπως αυτό που λες δε γίνεται ακριβώς έτσι;
Στην αρχή της σελίδας είναι όλος ο κώδικας ρίξε μία ματιά αν θες και πες μου πώς θα το φτιάξω.


Οι μηχανές αναζήτησης της Google δε με ενθουσιάζουν και θέλω να μη χαλάει την αισθητική της σελίδας που φτιάχνω.
Σίγουρα αποτελεί μία λύση και σε ευχαριστώ dimsis.

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από Basilakis » 17 Νοέμ 2009 16:43

Σου είπα ακριβώ πως να το φτιάξεις.

Η επόμενη λύση είναι το διάβασμα
http://www.build-your-website.co.uk/add ... -pages.htm

Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από charavge » 17 Νοέμ 2009 17:12

Ευχαριστώ πολύ!
Λύθηκε...
Δεν το κατάλαβα αρχικά... :hammer: :hammer: :hammer:
Εσύ εννοούσες όλο το κομμάτι της Javascript που έχω μέσα στη σελίδα να τον μεταφέρω σε ένα αρχείο και αντ' αυτού να γράψω το κομμάτι κώδικα που μου έδωσες. Ο κώδικας αυτός καλεί τον κώδικα του αρχείου και τον μεταγλωτίζει σε Javascript.
Πώς να το περιγράψω;
Ιδανικό! :D :D :D :D :D :D :D :D :D :D :D
Αντικαθιστώ στην ουσία όλο αυτό το σκουπίδι με αυτό το κομμάτι κώδικα και το συνοδευτικό αρχείο.
Thanks!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από korgr » 17 Νοέμ 2009 17:30

Ειχα αρχισει να απελπιζομαι!
Σου το εξηγησε τοσο αναλυτικα ο Basilakis που ελεγα "Μα ειναι δυνατον να μην το καταλαβαινει?".
Τελος καλο ολα καλα ομως! :D

Πραγματικα μια απο τις αρχες της ενσωματωσης script.
Με την ιδια ακριβως λογικη, ενσωματωνεις και τα css αρχεια σου, απο το να επαναλαμβανεις τα css rules σε καθε σελιδα σου ξεχωριστα!

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από Basilakis » 18 Νοέμ 2009 01:22

http://www.freestuff.gr/forums/viewtopic.php?t=46255

ρωτάμε σε ένα σημείο, όσο και να καιγόμαστε παρακαλώ

mat978
Δημοσιεύσεις: 6
Εγγραφή: 28 Ιουν 2010 01:48

[SOLVED]Απλό Search Engine σε Javascript... [THANKS]

Δημοσίευση από mat978 » 29 Αύγ 2010 02:26

Καλησπέρα θα ήθελα να ρωτήσω αν θέλουμε την συγκεκριμένη μηχανή αναζήτησής να την βάλουμε σε ελληνικό site τι αλλαγές χρειάζονται?

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες