From fab75f2b4d82f01f1f8d238ca34d6bdd065c2ccf Mon Sep 17 00:00:00 2001
From: Fize Jacques <jacques.fize@cirad.fr>
Date: Tue, 2 Apr 2019 15:13:17 +0200
Subject: [PATCH] Add _all query + modify n_label similar and n_alias_similar

---
 .gitignore                   |  2 ++
 gazpy/gazetteer/geodict.py   | 19 ++++++++++++++++---
 gazpy/query/query_builder.py |  6 +++---
 setup.py                     |  2 +-
 4 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/.gitignore b/.gitignore
index 894a44c..c51f9c0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -102,3 +102,5 @@ venv.bak/
 
 # mypy
 .mypy_cache/
+.DS_Store
+.idea
diff --git a/gazpy/gazetteer/geodict.py b/gazpy/gazetteer/geodict.py
index 77dbad8..9b9061c 100644
--- a/gazpy/gazetteer/geodict.py
+++ b/gazpy/gazetteer/geodict.py
@@ -28,8 +28,15 @@ class Geodict(Base):
                               sorted_by=self.score_field, sized=True,
                               size=n)
         try:
-            return self.to_element(self.es_client.search("gazetteer", "place", query))
-        except :
+            res = self.to_element(self.es_client.search("gazetteer", "place", query))
+            if not len(res)>0:
+                query = self.qb.query(query_string=True,_all=True, regexp=True, regexp_value=".* ({0}) .*".format(label), field=lang,
+                              value=label, sorted=score,
+                              sorted_by=self.score_field, sized=True,
+                              size=n)
+                res = self.to_element(self.es_client.search("gazetteer", "place", query))
+            return res
+        except Exception as e:
             return []
 
     def get_n_alias_similar(self, alias, lang, n, score=True):
@@ -38,7 +45,13 @@ class Geodict(Base):
                               sorted_by=self.score_field, sized=True,
                               size=n)
         try:
-            return self.to_element(self.es_client.search("gazetteer", "place", query))
+            res= self.to_element(self.es_client.search("gazetteer", "place", query))
+            if not len(res) >0:
+                query = self.qb.query(query_string=True, _all=True, nested=True, nested_field=lang, regexp=True,
+                               regexp_value=".* ({0}) .*".format(alias), field="aliases", value=alias, sorted=score,
+                              sorted_by=self.score_field, sized=True,
+                              size=n)
+            return res
         except :
             return []
         
diff --git a/gazpy/query/query_builder.py b/gazpy/query/query_builder.py
index 56340c0..469e70d 100644
--- a/gazpy/query/query_builder.py
+++ b/gazpy/query/query_builder.py
@@ -19,7 +19,7 @@ class QueryBuilder():
         query_string = kwargs.get("query_string", False)
         nested = kwargs.get("nested", False)
         match_all=kwargs.get("match_all",False)
-
+        _all =kwargs.get("_all",False)
         #Value
         value=kwargs.get("value","")
 
@@ -69,12 +69,12 @@ class QueryBuilder():
 
 
         if query_string:
-            body_query["query"]={"query_string":{"default_field":field,"query":value if not regexped else regexp_value}}
+            ff=(field if not _all else "_all")
+            body_query["query"]={"query_string":{"default_field":ff,"query":value if not regexped else regexp_value}}
         elif term:
             body_query["query"]={"term":{field:value}}
         elif match_all:
             body_query["query"] = {"match_all":{}}
-
         body_query["query"]={"bool":{"must":[body_query["query"]]}}
 
         if min_valued:
diff --git a/setup.py b/setup.py
index 3557326..017017e 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ from setuptools.command import install
 
 setup(
     name='gazpy',
-    version='0.1',
+    version='0.3',
     packages=['gazpy', 'gazpy.query', 'gazpy.gazetteer'],
     url='',
     license='MIT',
-- 
GitLab