couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Heiko Henning <heikohenn...@freenet.de>
Subject Anfrage auf Performance und Realisierbarkeit
Date Thu, 11 Jun 2009 17:57:43 GMT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
Hallo,

ich habe gerade den CCC exp  podcast mit genuss gehört.
Und finde eure Datenbank sehr interessant.
würde Sie auch gerne für http://www.jepaa.com/ verweden und würde
dich/euch mal kurz drum bitten mir zu sagen wir realistisch das ist:

Eine Seite schaut ca so aus:
{
  "domain" : "anzeigenmarkt.tel",
  "txt" : "bli bla blub",
  "kontakte" : [
    {    
        "name" : "Anfrage",
        "ort" : "work",
        "data" : "info@domain.de",
        "type" : "mail"
    },
    {    
        "name" : "Suppport",
        "ort"  : "work",
        "data" : "support@domain.de",
        "type" : "mail"
    },
   ],
  "standort" : {
        "lat" : 145.32423432,
        "lon" : 232.232
   },
  "keywords" : [
    {
     "ul" : "Geschäft",
     "fn" : "Max",
     "ln" : "Muster",
     "nn" : "musti",
     "st" : "mustergasse"
    },
    {
     "ul" : "Privat",
     "fn" : "Max",
     "ln" : "Muster",
     "nn" : "musti",
     "st" : "dorfstrasse"
    },
    
  ]
}
 
Davon so 300 000 Stück.
Nun möchte ich eine Fultext Index mit Bewertung erzeugen:

var stopwordfilter = new Array('ohne', 'Um', der', 'die' .....)
function split(txt)
{
 var data = txt.split("/[\s\,\.\!\?\-\_]+/");
 for(i in stopwordfilter)
  for(x in data)
   if (data[x]==stopwordfilter[i])
    delete data[x];
    
 return data;    
}

var domainParts = seite.domain.split("/\./");
domainParts.arrayReverse();
var points = 5;
for(var i=1 ; i<domainParts.length ; i+++)
{
 var basePoints = 10;
 for(var l = domainParts[i].length-1 ; l>0 ; l--)
 {
  addToIndex(domainParts.substr(0, l), points*basePoints);
  basePoints--;
 }
 
 points=points/2;
}

und das auch für titel und text und keywords usw
aber halt auf jedes Feld eine andere Bewertung und so das z.B.
das Wort "anzeigenmarkt" in der Domain 10 Punkte bekommt und
anzeigenmark nur noch 9 weil die Übereinstimmung kleiner ist.
 
Dann bei der Suche wird dann Gesucht:
Suchsring: "grüne Graß Wiese"
 
Suche nach "grüne" oder "Graß" oder "Wiese" und seite.standort.lat
zwischen 100 und 130 und seite.standort.lon zwischen 200 und 220 ist
Sortiere nach der Bewertung im Index aber wenn eine Seite "grüne" und
"Wiese" enthält dann multipliziere die gefunden Bewertungen miteinander.

Und vorallem wie performant das ist?
 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
 
iD8DBQFKMUWXNPIVS5vtVToRAt84AJ4letTBUy7s7yHqdf9NA8zXxciNfgCgtrv3
lPgdAqDEiJu9H/HF+tKc09k=
=ikjv
-----END PGP SIGNATURE-----


Mime
View raw message