<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>import/load/se.py</filename>
    </added>
    <added>
      <filename>utils/se.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/__init__.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/_checkxapian.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/datastructures.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/errors.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/fieldactions.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/fieldmappings.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/highlight.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/indexerconnection.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/marshall.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/memutils.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/parsedate.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/replaylog.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/schema.py</filename>
    </added>
    <added>
      <filename>vendor/xappy/searchconnection.py</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -5,3 +5,4 @@ tmp
 data
 import/.*
 .DS_Store
+se</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,7 @@ LOADERS = .schema .manual \
           .bills .interests .votesmart .photos .lobbyist \
 		  .fec .census .soi .earmarks .wyr .saveusers .restoreusers
 
-all: database
+all: database .se
 clean:
 	rm $(LOADERS)
 
@@ -48,6 +48,10 @@ cleanload:
 cleanparse:
 	rm $(NJS)
 
+../se: database
+    $(PYTHON) load/se.py
+    touch $@
+
 database: $(LOADERS)
 
 .manual: .schema load/manual.py load/manual/*.json</diff>
      <filename>import/Makefile</filename>
    </modified>
    <modified>
      <diff>@@ -509,9 +509,7 @@ class Pol_contacts(sql.Table):
 
 def init():
     db.query(&quot;CREATE VIEW census AS select * from census_meta NATURAL JOIN census_data&quot;)
-    db.query(&quot;CREATE VIEW v_politician_name  AS (SELECT id, firstname, lastname, id || ' ' || firstname || ' ' || lastname AS name FROM politician)&quot;)
     try:
         db.query(&quot;GRANT ALL on census TO watchdog&quot;)
-        db.query(&quot;GRANT ALL on v_politician_name TO watchdog&quot;)
     except:
         pass # user doesn't exist</diff>
      <filename>schema.py</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ $var title: File Not Found
       
       &lt;p&gt;
         &lt;strong&gt;Name or ZIP:&lt;/strong&gt;
-        &lt;input type=&quot;text&quot; class=&quot;white&quot; name=&quot;zip&quot; /&gt;
+        &lt;input type=&quot;text&quot; class=&quot;white&quot; name=&quot;q&quot; /&gt;
         &lt;button type=&quot;submit&quot; /&gt;Search&lt;/button&gt;
       &lt;/p&gt;
       </diff>
      <filename>templates/404.html</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ $var title: The good government site with teeth
       
       &lt;p&gt;
         &lt;strong&gt;Name or ZIP:&lt;/strong&gt;
-        &lt;input type=&quot;text&quot; class=&quot;white&quot; name=&quot;zip&quot; /&gt;
+        &lt;input type=&quot;text&quot; class=&quot;white&quot; name=&quot;q&quot; /&gt;
         &lt;button type=&quot;submit&quot; /&gt;Search&lt;/button&gt;
       &lt;/p&gt;
       </diff>
      <filename>templates/index.html</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
 import re, sys
 import web
 
-from utils import zip2rep, simplegraphs, apipublish, users, writerep
+from utils import zip2rep, simplegraphs, apipublish, users, writerep, se
 import blog
 import petition
 import settings
@@ -90,21 +90,23 @@ class find:
         i = web.input(address=None)
         pzip5 = re.compile(r'\d{5}')
         pzip4 = re.compile(r'\d{5}-\d{4}')
-        pname = re.compile(r'[a-zA-Z\.]+')
         pdist = re.compile(r'[a-zA-Z]{2}\-\d{2}')
         
         dists = None
-        if i.get('zip'):
-            if pzip4.match(i.zip):
-                zip, plus4 = i.zip.split('-')
+        if not i.get('q'):
+            i.q = i.get('zip')
+        
+        if i.q:
+            if pzip4.match(i.q):
+                zip, plus4 = i.q.split('-')
                 dists = [x.district for x in
                   db.select('zip4', where='zip=$zip and plus4=$plus4', vars=locals())]
             
-            elif pzip5.match(i.zip):
+            elif pzip5.match(i.q):
                 try:
-                    dists = zip2rep.zip2dist(i.zip, i.address)
+                    dists = zip2rep.zip2dist(i.q, i.address)
                 except zip2rep.BadAddress:
-                    return render.find_badaddr(i.zip, i.address)
+                    return render.find_badaddr(i.q, i.address)
             
             if dists:
                 d_dists = schema.District.select(where=web.sqlors('name=', dists))
@@ -114,29 +116,23 @@ class find:
                 if len(dists) == 1:
                     raise web.seeother('/us/%s' % dists[0].lower())
                 elif len(dists) == 0:
-                    return render.find_none(i.zip)
-                else:
-                    return render.find_multi(i.zip, d_dists)
-
-            if pdist.match(i.zip):
-                raise web.seeother('/us/%s' % i.zip)
-
-            if pname.match(i.zip):
-                in_name = i.zip.lower()
-                name = in_name.replace(' ', '_')
-                vars = {'name':'%%%s%%' % name}
-                reps = db.select('politician', where=&quot;id like $name&quot;, vars=vars)
-                if len(reps) == 0:
-                    vars = {'name':'%%%s%%' % in_name}
-                    reps = db.select('v_politician_name', where=&quot;name ilike $name&quot;, vars=vars)
-                if len(reps) &gt; 1:
-                    return render.find_multi_reps(reps)
+                    return render.find_none(i.q)
                 else:
-                    try:
-                        rep = reps[0]
-                        web.seeother('/p/%s' % rep.id)
-                    except IndexError:
-                        raise web.notfound
+                    return render.find_multi(i.q, d_dists)
+
+            if pdist.match(i.q):
+                raise web.seeother('/us/%s' % i.q)
+            
+            results = se.query(i.q)
+            reps = db.select('politician', where=web.sqlors('id=', results))
+            if len(reps) &gt; 1:
+                return render.find_multi_reps(reps)
+            else:
+                try:
+                    rep = reps[0]
+                    web.seeother('/p/%s' % rep.id)
+                except IndexError:
+                    raise web.notfound
 
         else:
             index = schema.District.select(order='name asc')</diff>
      <filename>webapp.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8c756bade59d8146248d4a39bc58ad16cbf34555</id>
    </parent>
  </parents>
  <author>
    <name>Aaron Swartz</name>
    <email>aaronsw@watchdog.net</email>
  </author>
  <url>http://github.com/aaronsw/watchdog/commit/623fed21105bdddd3d7e00b782103cf0fd9a11bc</url>
  <id>623fed21105bdddd3d7e00b782103cf0fd9a11bc</id>
  <committed-date>2008-11-10T08:25:16-08:00</committed-date>
  <authored-date>2008-11-10T08:25:16-08:00</authored-date>
  <message>use xapian for search</message>
  <tree>4e3c8bf55664ae31f8d24df260828d365a481fb3</tree>
  <committer>
    <name>Aaron Swartz</name>
    <email>aaronsw@watchdog.net</email>
  </committer>
</commit>
