forked from hans/Nominatim
rename use of category as POI search to near_item
Use the term category only as a short-cut for "tuple of key and value".
This commit is contained in:
@@ -89,12 +89,12 @@ class SearchBuilder:
|
||||
if sdata is None:
|
||||
return
|
||||
|
||||
categories = self.get_search_categories(assignment)
|
||||
near_items = self.get_near_items(assignment)
|
||||
|
||||
if assignment.name is None:
|
||||
if categories and not sdata.postcodes:
|
||||
sdata.qualifiers = categories
|
||||
categories = None
|
||||
if near_items and not sdata.postcodes:
|
||||
sdata.qualifiers = near_items
|
||||
near_items = None
|
||||
builder = self.build_poi_search(sdata)
|
||||
elif assignment.housenumber:
|
||||
hnr_tokens = self.query.get_tokens(assignment.housenumber,
|
||||
@@ -102,16 +102,16 @@ class SearchBuilder:
|
||||
builder = self.build_housenumber_search(sdata, hnr_tokens, assignment.address)
|
||||
else:
|
||||
builder = self.build_special_search(sdata, assignment.address,
|
||||
bool(categories))
|
||||
bool(near_items))
|
||||
else:
|
||||
builder = self.build_name_search(sdata, assignment.name, assignment.address,
|
||||
bool(categories))
|
||||
bool(near_items))
|
||||
|
||||
if categories:
|
||||
penalty = min(categories.penalties)
|
||||
categories.penalties = [p - penalty for p in categories.penalties]
|
||||
if near_items:
|
||||
penalty = min(near_items.penalties)
|
||||
near_items.penalties = [p - penalty for p in near_items.penalties]
|
||||
for search in builder:
|
||||
yield dbs.NearSearch(penalty + assignment.penalty, categories, search)
|
||||
yield dbs.NearSearch(penalty + assignment.penalty, near_items, search)
|
||||
else:
|
||||
for search in builder:
|
||||
search.penalty += assignment.penalty
|
||||
@@ -339,15 +339,14 @@ class SearchBuilder:
|
||||
return sdata
|
||||
|
||||
|
||||
def get_search_categories(self,
|
||||
assignment: TokenAssignment) -> Optional[dbf.WeightedCategories]:
|
||||
""" Collect tokens for category search or use the categories
|
||||
def get_near_items(self, assignment: TokenAssignment) -> Optional[dbf.WeightedCategories]:
|
||||
""" Collect tokens for near items search or use the categories
|
||||
requested per parameter.
|
||||
Returns None if no category search is requested.
|
||||
"""
|
||||
if assignment.category:
|
||||
if assignment.near_item:
|
||||
tokens: Dict[Tuple[str, str], float] = {}
|
||||
for t in self.query.get_tokens(assignment.category, TokenType.CATEGORY):
|
||||
for t in self.query.get_tokens(assignment.near_item, TokenType.NEAR_ITEM):
|
||||
cat = t.get_category()
|
||||
if (not self.details.categories or cat in self.details.categories)\
|
||||
and t.penalty < tokens.get(cat, 1000.0):
|
||||
|
||||
Reference in New Issue
Block a user