[Talk-de] Neuer Namefinder

Sascha Silbe sascha-ml-gis-osm-talk-de at silbe.org
Di Aug 19 21:51:47 UTC 2008


On Mon, Jul 28, 2008 at 12:15:16AM +0200, Frederik Ramm wrote:

>> * Namefinder: Meistens äre man schneller, das Lexikon 
>> durchzublättern.
> Der Namefinder ist ein Hobbyprojekt von David Earl. Keine Ahnung, wie 
> effizient der programmiert ist. Schreib einen besseren Namefinder, und 
> ich bin sicher, er wird auf der Startseite eingebunden.
Ich habe das mal zum Anlass genommen, meine Erfahrung beim Bauen eines 
Routers für OSM-Daten für etwas zu verwenden, das in absehbarer Zeit 
für "die Community" brauchbar ist. Sprich: Ich habe einen neuen 
Namefinder geschrieben.

Ein direkter, fairer Vergleich mit dem "alten" Namefinder ist schwierig, 
da Netzwerk-Overhead hinzukommt und der komplette Frontend-Code (incl. 
Parsen des Suchstring + Formatieren der Antwort) noch fehlt. Deshalb nur 
zwei Beispiele (jeweils die 2. Antwort, damit wir nicht die 
Festplatten-, sondern die Verarbeitungsgeschwindigkeit messen):

					alt		neu
Beethovenweg				0.681s		0.008970s
random string (=> 0 Ergebnisse)		0.310s		0.000352s

Übrigens Respekt an David Earl, das Teil ist wesentlich schneller, als 
ich bei PHP+MySQL erwartet hätte.


Die gute Nachricht: der IMO schwierigste Teil, nämlich der in C(++) 
implementierte Suchkern, ist fertig (zumindest was die Features angeht, 
die auch der "alte" Namefinder hat) und hinreichend schnell.
Die schlechte Nachricht: es hat (wie üblich :) ) viel mehr Zeit 
gekostet als eingeplant war und ich sollte mich jetzt dringend um 
wichtigere Dinge kümmern. Wenn mir jemand hilft und die Frontend-Seite 
übernimmt, könnte der bisherigen Namefinder in naher Zukunft ersetzt 
werden (wobei der derzeit recht flott läuft - Grund für den Austausch 
wären da eher neue Features als schnellere Suche). Ansonsten dauerts 
halt ein bisschen länger, bis der Code fertig ist. :)


Um mal ein paar Zahlen zu nennen:

Rahmenbedingungen: planet-080813.osm.gz, Athlon 64 BE-2300 dual-core 
1.9Ghz, 4GB DDR2-800, Limit 100 Wege + 100 Nodes pro Schritt:

Datenbankgröße: ~8GB
Import: 206 Minuten
Startup: 41 Sekunden
RAM-Bedarf nach Start (-> Namen und Hashtabellen): 501MB

Namenssuche ("Provenceweg", exakt):            0.001117s
loc search (48.51 9.07 48.52 9.08):            0.061777s
exakter Name + loc:                            0.001331s
loc + exakter Name:                            0.005612s
Namenssuche ("Provenceweg", regex):            2.582227s
loc + regex:                                   0.232248s
exakter Name + loc (ganze Welt):               2.263841s
loc (ganze Welt):                              0.069157s
Namenssuche ("Provenceweg", Substring):        0.600431s


Ich habe noch ein paar Optimierungsideen für bestimmte Spezialfälle 
(insb. für Name+große BBox), aber IMO sind die Werte ganz OK. 
Insbesondere die häufigsten Fälle (exakter Name + loc) sind recht 
flott.

Zu finden ist der Code in meinem Arch-Repository [1] unter 
osmsearch--devel--0.1 (ein toller Name ist mir bisher nicht 
eingefallen). Die restlichen zum Betrieb nötigen Dateien (für 
genTagTypeMap.py) sind unter [2-4] zu finden.


[1] http://sascha.silbe.org/arch/sascha-arch@silbe.org--2008
[2] http://sascha.silbe.org/tmp/osmsearch.conf
[3] http://sascha.silbe.org/tmp/nodesDisplay.rules
[4] http://sascha.silbe.org/tmp/waysDisplay.rules

CU Sascha

-- 
http://sascha.silbe.org/
http://www.infra-silbe.de/
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 481 bytes
Beschreibung: Digital signature
URL         : <http://lists.openstreetmap.org/pipermail/talk-de/attachments/20080819/17f24361/attachment.sig>


Mehr Informationen über die Mailingliste Talk-de