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
=== modified file 'geoname-modpython.py'
--- geoname-modpython.py 2011-04-05 19:00:42 +0000
+++ geoname-modpython.py 2011-04-06 20:34:50 +0000
@@ -6,6 +6,10 @@
6geoname.longitude, geoname.latitude FROM admin1codes, geoname, countryInfo \6geoname.longitude, geoname.latitude FROM admin1codes, geoname, countryInfo \
7WHERE code = geoname.country||'.'||geoname.admin1 AND \7WHERE code = geoname.country||'.'||geoname.admin1 AND \
8countryInfo.iso_alpha2=geoname.country AND geoname.geonameid=%s;"8countryInfo.iso_alpha2=geoname.country AND geoname.geonameid=%s;"
9altstatement = "SELECT alternatename.alternateName, admin1codes.name, countryInfo.name, \
10geoname.longitude, geoname.latitude FROM alternatename, admin1codes, geoname, countryInfo \
11WHERE code = geoname.country||'.'||geoname.admin1 AND \
12countryInfo.iso_alpha2=geoname.country AND alternatename.geonameid=geoname.geonameid AND alternatename.alternatenameId=%s;"
9authstring = 'dbname=geonames user=geouser password=geopw host=localhost'13authstring = 'dbname=geonames user=geouser password=geopw host=localhost'
10jsonheader = '['14jsonheader = '['
11jsonfooter = ']'15jsonfooter = ']'
@@ -28,7 +32,13 @@
28 cursor = connection.cursor()32 cursor = connection.cursor()
29 try:33 try:
30 for x in result:34 for x in result:
31 cursor.execute(statement % x['id'])35 rawid = x['id']
36 idval = rawid / 10
37 idtype = rawid % 10
38 if idtype == 1:
39 cursor.execute(statement % idval)
40 else:
41 cursor.execute(altstatement % idval)
32 record = cursor.fetchone()42 record = cursor.fetchone()
33 if record:43 if record:
34 ret.append(jsonentry % record)44 ret.append(jsonentry % record)
3545
=== modified file 'import-geonames.sh'
--- import-geonames.sh 2011-04-06 13:10:44 +0000
+++ import-geonames.sh 2011-04-06 20:34:50 +0000
@@ -135,6 +135,7 @@
135CREATE INDEX geoname_id_idx ON geoname(geonameid);135CREATE INDEX geoname_id_idx ON geoname(geonameid);
136CREATE INDEX geoname_admin1codes_code_idx ON admin1codes(code);136CREATE INDEX geoname_admin1codes_code_idx ON admin1codes(code);
137CREATE INDEX geoname_countryinfo_isoalpha2_idx ON countryinfo(iso_alpha2);137CREATE INDEX geoname_countryinfo_isoalpha2_idx ON countryinfo(iso_alpha2);
138GRANT ALL PRIVILEGES ON geoname, admin1codes, countryInfo TO geouser;138CREATE INDEX geoname_alternatename_idx ON alternatename(alternatenameId);
139GRANT ALL PRIVILEGES ON geoname, admin1codes, countryInfo, alternatename TO geouser;
139COMMIT;140COMMIT;
140EOT141EOT
141142
=== modified file 'sphinx.conf'
--- sphinx.conf 2011-04-05 19:17:07 +0000
+++ sphinx.conf 2011-04-06 20:34:50 +0000
@@ -5,13 +5,25 @@
5sql_user = geouser5sql_user = geouser
6sql_pass = geopw6sql_pass = geopw
7sql_db = geonames7sql_db = geonames
8sql_query = SELECT geoname.geonameid, geoname.name, geoname.alternatenames, geoname.population AS population FROM geoname WHERE geoname.fclass='P'8sql_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'
9sql_attr_uint = population
10}
11
12source altnamessrc
13{
14type = pgsql
15sql_host = localhost
16sql_user = geouser
17sql_pass = geopw
18sql_db = geonames
19sql_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))
9sql_attr_uint = population20sql_attr_uint = population
10}21}
1122
12index geonames23index geonames
13{24{
14 source = geonamessrc25 source = geonamessrc
26 source = altnamessrc
15 path = /var/lib/sphinxsearch/data/geonames27 path = /var/lib/sphinxsearch/data/geonames
16 docinfo = extern28 docinfo = extern
17 morphology = none29 morphology = none

Subscribers

People subscribed via source and target branches

to all changes: