Merge lp:~mterry/ubuntu-geonames/search-alt into lp:ubuntu-geonames

Proposed by Michael Terry
Status: Merged
Merged at revision: 16
Proposed branch: lp:~mterry/ubuntu-geonames/search-alt
Merge into: lp:ubuntu-geonames
Diff against target: 73 lines (+26/-3)
3 files modified
geoname-modpython.py (+11/-1)
import-geonames.sh (+2/-1)
sphinx.conf (+13/-1)
To merge this branch: bzr merge lp:~mterry/ubuntu-geonames/search-alt
Reviewer Review Type Date Requested Status
Evan (community) Approve
Karl Lattimer (community) Approve
Review via email: mp+56647@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Karl Lattimer (karl-qdh) wrote :

Tested here and this branch adds the necessary indexes for alternate names.

review: Approve
Revision history for this message
Evan (ev) wrote :

Looks good! Testing with Shanghai (上海) returns the correct result here. Thanks a bunch!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'geoname-modpython.py'
2--- geoname-modpython.py 2011-04-05 19:00:42 +0000
3+++ geoname-modpython.py 2011-04-06 20:34:50 +0000
4@@ -6,6 +6,10 @@
5 geoname.longitude, geoname.latitude FROM admin1codes, geoname, countryInfo \
6 WHERE code = geoname.country||'.'||geoname.admin1 AND \
7 countryInfo.iso_alpha2=geoname.country AND geoname.geonameid=%s;"
8+altstatement = "SELECT alternatename.alternateName, admin1codes.name, countryInfo.name, \
9+geoname.longitude, geoname.latitude FROM alternatename, admin1codes, geoname, countryInfo \
10+WHERE code = geoname.country||'.'||geoname.admin1 AND \
11+countryInfo.iso_alpha2=geoname.country AND alternatename.geonameid=geoname.geonameid AND alternatename.alternatenameId=%s;"
12 authstring = 'dbname=geonames user=geouser password=geopw host=localhost'
13 jsonheader = '['
14 jsonfooter = ']'
15@@ -28,7 +32,13 @@
16 cursor = connection.cursor()
17 try:
18 for x in result:
19- cursor.execute(statement % x['id'])
20+ rawid = x['id']
21+ idval = rawid / 10
22+ idtype = rawid % 10
23+ if idtype == 1:
24+ cursor.execute(statement % idval)
25+ else:
26+ cursor.execute(altstatement % idval)
27 record = cursor.fetchone()
28 if record:
29 ret.append(jsonentry % record)
30
31=== modified file 'import-geonames.sh'
32--- import-geonames.sh 2011-04-06 13:10:44 +0000
33+++ import-geonames.sh 2011-04-06 20:34:50 +0000
34@@ -135,6 +135,7 @@
35 CREATE INDEX geoname_id_idx ON geoname(geonameid);
36 CREATE INDEX geoname_admin1codes_code_idx ON admin1codes(code);
37 CREATE INDEX geoname_countryinfo_isoalpha2_idx ON countryinfo(iso_alpha2);
38-GRANT ALL PRIVILEGES ON geoname, admin1codes, countryInfo TO geouser;
39+CREATE INDEX geoname_alternatename_idx ON alternatename(alternatenameId);
40+GRANT ALL PRIVILEGES ON geoname, admin1codes, countryInfo, alternatename TO geouser;
41 COMMIT;
42 EOT
43
44=== modified file 'sphinx.conf'
45--- sphinx.conf 2011-04-05 19:17:07 +0000
46+++ sphinx.conf 2011-04-06 20:34:50 +0000
47@@ -5,13 +5,25 @@
48 sql_user = geouser
49 sql_pass = geopw
50 sql_db = geonames
51-sql_query = SELECT geoname.geonameid, geoname.name, geoname.alternatenames, geoname.population AS population FROM geoname WHERE geoname.fclass='P'
52+sql_query = SELECT geoname.geonameid*10+1 AS id, geoname.name AS name, geoname.population AS population, geoname.geonameid AS geonameid FROM geoname WHERE geoname.fclass='P'
53+sql_attr_uint = population
54+}
55+
56+source altnamessrc
57+{
58+type = pgsql
59+sql_host = localhost
60+sql_user = geouser
61+sql_pass = geopw
62+sql_db = geonames
63+sql_query = SELECT alternatename.alternatenameId*10+2 AS id, alternatename.alternateName AS name, geoname.population AS population, geoname.geonameid AS geonameid FROM alternatename JOIN geoname on (geoname.geonameid = alternatename.geonameid AND geoname.name != alternatename.alternateName) WHERE (geoname.fclass='P' AND (LENGTH(alternatename.isoLanguage) < 4 OR alternatename.isoLanguage is null))
64 sql_attr_uint = population
65 }
66
67 index geonames
68 {
69 source = geonamessrc
70+ source = altnamessrc
71 path = /var/lib/sphinxsearch/data/geonames
72 docinfo = extern
73 morphology = none

Subscribers

People subscribed via source and target branches

to all changes: