You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2018/03/30 17:16:16 UTC
allura git commit: [#8197] better matching on site admin searches
Repository: allura
Updated Branches:
refs/heads/db/8197 [created] c1fe8e7e3
[#8197] better matching on site admin searches
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/c1fe8e7e
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/c1fe8e7e
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/c1fe8e7e
Branch: refs/heads/db/8197
Commit: c1fe8e7e33740967a3d4d4e3b6df4bf33944db68
Parents: 78fefa8
Author: Dave Brondsema <da...@brondsema.net>
Authored: Fri Mar 30 13:16:11 2018 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Fri Mar 30 13:16:11 2018 -0400
----------------------------------------------------------------------
Allura/allura/lib/search.py | 7 ++++++-
Allura/allura/templates/site_admin_search.html | 1 +
Allura/allura/tests/unit/test_solr.py | 4 ++--
3 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/c1fe8e7e/Allura/allura/lib/search.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/search.py b/Allura/allura/lib/search.py
index 1cf26c2..736b42b 100644
--- a/Allura/allura/lib/search.py
+++ b/Allura/allura/lib/search.py
@@ -194,7 +194,12 @@ def site_admin_search(model, q, field, **kw):
q = obj.translate_query(q, fields)
else:
# construct query for a specific selected field
- q = obj.translate_query(u'%s:%s' % (field, q), fields)
+ # use parens to group all the parts of the query with the field
+ # escaping spaces with '\ ' isn't sufficient for display_name_t since its stored as text_general (why??)
+ # and wouldn't handle foo@bar.com split on @ either
+ # This should work, but doesn't for unknown reasons: q = u'{!term f=%s}%s' % (field, q)
+ q = obj.translate_query(u'%s:(%s)' % (field, q), fields)
+ kw['q.op'] = 'AND' # so that all terms within the () are required
fq = [u'type_s:%s' % model.type_s]
return search(q, fq=fq, ignore_errors=False, **kw)
http://git-wip-us.apache.org/repos/asf/allura/blob/c1fe8e7e/Allura/allura/templates/site_admin_search.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/site_admin_search.html b/Allura/allura/templates/site_admin_search.html
index c43982d..d7d11eb 100644
--- a/Allura/allura/templates/site_admin_search.html
+++ b/Allura/allura/templates/site_admin_search.html
@@ -31,6 +31,7 @@
<div class="grid-23">
{{ c.search_form.display(q=q, f=f) }}
+ <p>Use quotes for an exact literal match, or <code>*</code> for wildcard. E.g. <code>"john doe"</code> or <code>test*</code></p>
</div>
{% if objects %}
http://git-wip-us.apache.org/repos/asf/allura/blob/c1fe8e7e/Allura/allura/tests/unit/test_solr.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/unit/test_solr.py b/Allura/allura/tests/unit/test_solr.py
index 3d5317c..af59ae9 100644
--- a/Allura/allura/tests/unit/test_solr.py
+++ b/Allura/allura/tests/unit/test_solr.py
@@ -98,7 +98,7 @@ class TestSolr(unittest.TestCase):
fq = ['type_s:Project']
site_admin_search(Project, 'test', 'shortname', rows=25)
search.assert_called_once_with(
- 'shortname_s:test', fq=fq, ignore_errors=False, rows=25)
+ 'shortname_s:(test)', fq=fq, ignore_errors=False, rows=25, **{'q.op': 'AND'})
search.reset_mock()
site_admin_search(Project, 'shortname:test || shortname:test2', '__custom__')
@@ -109,7 +109,7 @@ class TestSolr(unittest.TestCase):
search.reset_mock()
site_admin_search(User, 'test-user', 'username', rows=25)
search.assert_called_once_with(
- 'username_s:test-user', fq=fq, ignore_errors=False, rows=25)
+ 'username_s:(test-user)', fq=fq, ignore_errors=False, rows=25, **{'q.op': 'AND'})
search.reset_mock()
site_admin_search(User, 'username:admin1 || username:root', '__custom__')