mirror of
https://github.com/iiab/iiab.git
synced 2025-03-09 15:40:17 +00:00
Osm (#26)
* fixes to change iiab->osm * change the name in meta too * create osm_install/enabled default flags * add maps alias,copy map.html to index.html * source file names do not change * incorporate osm-fixes in playbook * template rather than copy * add iiab back in for menu system
This commit is contained in:
parent
a4fb89ba35
commit
617dbde56f
11 changed files with 651 additions and 37 deletions
58
roles/osm/templates/map_search.py
Normal file
58
roles/osm/templates/map_search.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
# Internet-in-a-Box System
|
||||
# By Braddock Gaskill, 16 Feb 2013
|
||||
# Modified by Tim Moody, 8 Apr 2016
|
||||
from utils import whoosh_open_dir_32_or_64
|
||||
# from whoosh.qparser import QueryParser
|
||||
from whoosh.qparser import MultifieldParser
|
||||
from whoosh import sorting
|
||||
|
||||
from utils import whoosh2dict
|
||||
|
||||
|
||||
class MapSearch(object):
|
||||
def __init__(self, index_dir):
|
||||
"""Initialize a search object.
|
||||
index_dir is the Whoosh index directory to use."""
|
||||
self.index_dir = index_dir
|
||||
|
||||
def search(self, query, page=1, pagelen=20):
|
||||
"""Return a sorted list of results.
|
||||
pagelen specifies the number of hits per page.
|
||||
page specifies the page of results to return (first page is 1)
|
||||
Set pagelen = None or 0 to retrieve all results.
|
||||
"""
|
||||
query = unicode(query) # Must be unicode
|
||||
population_sort_facet = sorting.FieldFacet("population", reverse=True)
|
||||
ix = whoosh_open_dir_32_or_64(self.index_dir)
|
||||
with ix.searcher() as searcher:
|
||||
# query = QueryParser("ngram_name", ix.schema).parse(query)
|
||||
mparser = MultifieldParser(["ngram_name", "admin1_code", "country_code"], schema=ix.schema)
|
||||
query = mparser.parse(query)
|
||||
if pagelen is not None and pagelen != 0:
|
||||
try:
|
||||
results = searcher.search_page(query, page, pagelen=pagelen)
|
||||
except ValueError, e: # Invalid page number
|
||||
results = []
|
||||
else:
|
||||
results = searcher.search(query, limit=None)
|
||||
#r = [x.items() for x in results]
|
||||
r = whoosh2dict(results)
|
||||
ix.close()
|
||||
# experiment with tucking away content for display in popup.
|
||||
print r
|
||||
for d in r:
|
||||
d['popupText'] = 'test content'
|
||||
d['name'] = d['name'] + ', ' + d['admin1_code'] + ', ' + d['country_code']
|
||||
|
||||
return r
|
||||
|
||||
def count(self, query):
|
||||
"""Return total number of matching documents in index"""
|
||||
query = unicode(query) # Must be unicode
|
||||
ix = whoosh_open_dir_32_or_64(self.index_dir)
|
||||
with ix.searcher() as searcher:
|
||||
query = QueryParser("title", ix.schema).parse(query)
|
||||
results = searcher.search(query)
|
||||
n = len(results)
|
||||
ix.close()
|
||||
return n
|
Loading…
Add table
Add a link
Reference in a new issue