blacklight_advanced_search 5.1.4 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +9 -3
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/app/controllers/blacklight_advanced_search/advanced_controller.rb +6 -43
- data/blacklight_advanced_search.gemspec +1 -1
- data/lib/blacklight_advanced_search/advanced_search_builder.rb +21 -1
- data/lib/blacklight_advanced_search/render_constraints_override.rb +2 -2
- data/lib/generators/blacklight_advanced_search/install_generator.rb +1 -1
- data/spec/features/blacklight_advanced_search_form_spec.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42196e18fa408ad581faf0d48166bf86578c40f6
|
4
|
+
data.tar.gz: 6137564dd1ffdbc2b29e9e553515b74834af7fff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94fd18c2f7bf110903cd2f8a6c33de4e56b6422ab37337b9e0690046fc068a4073d2d27912719da12b296af7797cdfa339ac44b39ee580b3856f108dd5f8b0df
|
7
|
+
data.tar.gz: df99f7c358ab936301edb9fafc0d710164ff05b5f086f313dd8e4218fd53bdbf7df05a56dfc7df26cad36aad57f9ef6d3fd4e1f9ac15065c635d61441c4f0536
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
This is an advanced search plugin for Blacklight ( http://www.projectblacklight.org ).
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/blacklight_advanced_search) [](https://travis-ci.org/projectblacklight/blacklight_advanced_search)
|
4
|
+
|
3
5
|
## Blacklight version compatibility
|
4
6
|
|
5
7
|
This is a plugin for [Blacklight](http://github.com/projectblacklight/blacklight)
|
@@ -32,12 +34,12 @@ Add to your application's Gemfile:
|
|
32
34
|
|
33
35
|
then run 'bundle install'. Then run:
|
34
36
|
|
35
|
-
rails generate blacklight_advanced_search
|
37
|
+
rails generate blacklight_advanced_search
|
36
38
|
|
37
39
|
* The 'generate' command will install 'require' statements for the plugin's assets into your application's application.js/application.css asset pipeline files
|
38
40
|
* And it can optionally install a localized search form with a link to advanced search. If you've already localized your search form you'll want to do this manually instead.
|
39
41
|
|
40
|
-
You may want
|
42
|
+
You may want turn to enable AND/OR/NOT parsing even in ordinary search, this is not on by default. See "Expression parsing in ordinary search" below.
|
41
43
|
|
42
44
|
## Accessing
|
43
45
|
|
@@ -64,7 +66,11 @@ If your application uses a single Solr qt request handler for all its search fie
|
|
64
66
|
|
65
67
|
Turn this feature on by adding to your CatalogController definition:
|
66
68
|
|
67
|
-
|
69
|
+
self.search_params_logic << :add_advanced_parse_q_to_solr
|
70
|
+
|
71
|
+
And/or, if you've switched over to configuration in SearchBuilder, then to your ./app/models/search_builder.rb:
|
72
|
+
|
73
|
+
self.default_processor_chain << :add_advanced_parse_q_to_solr
|
68
74
|
|
69
75
|
This will intercept queries entered in ordinary Blacklight search interface, and parse them for AND/OR/NOT (and parens), producing appropriate Solr query. This allows single-field boolean expressions to be entered in ordinary search, providing a consistent experience with advanced search.
|
70
76
|
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.
|
1
|
+
5.2.0
|
@@ -1,8 +1,6 @@
|
|
1
1
|
# Need to sub-class CatalogController so we get all other plugins behavior
|
2
2
|
# for our own "inside a search context" lookup of facets.
|
3
3
|
class BlacklightAdvancedSearch::AdvancedController < CatalogController
|
4
|
-
include AdvancedHelper # so we get the #advanced_search_context method
|
5
|
-
|
6
4
|
|
7
5
|
def index
|
8
6
|
unless request.method==:post
|
@@ -12,48 +10,13 @@ class BlacklightAdvancedSearch::AdvancedController < CatalogController
|
|
12
10
|
|
13
11
|
protected
|
14
12
|
def get_advanced_search_facets
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
# existing :q or ADVANCED facets, so we remove those params.
|
21
|
-
adv_keys = blacklight_config.search_fields.keys.map {|k| k.to_sym}
|
22
|
-
trimmed_params = params.except *adv_keys
|
23
|
-
trimmed_params.delete(:f_inclusive) # adv facets
|
24
|
-
|
25
|
-
search_context_params = solr_search_params(trimmed_params)
|
26
|
-
|
27
|
-
# Don't want to include the 'q' from basic search in our search
|
28
|
-
# context. Kind of hacky becuase solr_search_params insists on
|
29
|
-
# using controller.params, not letting us over-ride.
|
30
|
-
search_context_params.delete(:q)
|
31
|
-
search_context_params.delete("q")
|
32
|
-
|
33
|
-
# Also delete any facet-related params, or anything else
|
34
|
-
# we want to set ourselves
|
35
|
-
search_context_params.delete_if do |k, v|
|
36
|
-
k = k.to_s
|
37
|
-
(["facet.limit", "facet.sort", "f", "facets", "facet.fields", "per_page"].include?(k) ||
|
38
|
-
k =~ /f\..+\.facet\.limit/ ||
|
39
|
-
k =~ /f\..+\.facet\.sort/
|
40
|
-
)
|
41
|
-
end
|
13
|
+
# We want to find the facets available for the current search, but:
|
14
|
+
# * IGNORING current query (add in facets_for_advanced_search_form filter)
|
15
|
+
# * IGNORING current advanced search facets (remove add_advanced_search_to_solr filter)
|
16
|
+
response, _ = search_results(params, search_params_logic) do |search_builder|
|
17
|
+
search_builder.except(:add_advanced_search_to_solr).append(:facets_for_advanced_search_form)
|
42
18
|
end
|
43
19
|
|
44
|
-
|
45
|
-
input.merge!( search_context_params )
|
46
|
-
|
47
|
-
input[:per_page] = 0 # force
|
48
|
-
|
49
|
-
# force if set
|
50
|
-
input[:qt] = blacklight_config.advanced_search[:qt] if blacklight_config.advanced_search[:qt]
|
51
|
-
|
52
|
-
input.merge!( blacklight_config.advanced_search[:form_solr_parameters] ) if blacklight_config.advanced_search[:form_solr_parameters]
|
53
|
-
|
54
|
-
# ensure empty query is all records, to fetch available facets on entire corpus
|
55
|
-
input[:q] ||= '{!lucene}*:*'
|
56
|
-
|
57
|
-
repository.search(input)
|
20
|
+
return response
|
58
21
|
end
|
59
22
|
end
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
|
-
s.add_dependency "blacklight", "~> 5.
|
20
|
+
s.add_dependency "blacklight", "~> 5.15"
|
21
21
|
s.add_dependency "parslet"
|
22
22
|
|
23
23
|
s.add_development_dependency "rails"
|
@@ -76,5 +76,25 @@ module BlacklightAdvancedSearch
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
# A Solr param filter that is NOT included by default in the chain,
|
81
|
+
# but is appended by AdvancedController#index, to do a search
|
82
|
+
# for facets _ignoring_ the current query, we want the facets
|
83
|
+
# as if the current query weren't there.
|
84
|
+
#
|
85
|
+
# Also adds any solr params set in blacklight_config.advanced_search[:form_solr_parameters]
|
86
|
+
def facets_for_advanced_search_form(solr_p)
|
87
|
+
# ensure empty query is all records, to fetch available facets on entire corpus
|
88
|
+
solr_p["q"] = '{!lucene}*:*'
|
89
|
+
|
90
|
+
# We only care about facets, we don't need any rows.
|
91
|
+
solr_p["rows"] = "0"
|
92
|
+
|
93
|
+
# Anything set in config as a literal
|
94
|
+
if blacklight_config.advanced_search[:form_solr_parameters]
|
95
|
+
solr_p.merge!( blacklight_config.advanced_search[:form_solr_parameters] )
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
79
99
|
end
|
80
|
-
end
|
100
|
+
end
|
@@ -23,7 +23,7 @@ module BlacklightAdvancedSearch::RenderConstraintsOverride
|
|
23
23
|
content << render_constraint_element(
|
24
24
|
label, query,
|
25
25
|
:remove =>
|
26
|
-
|
26
|
+
search_action_path(remove_advanced_keyword_query(field, my_params).except(:controller, :action))
|
27
27
|
)
|
28
28
|
end
|
29
29
|
if (advanced_query.keyword_op == "OR" &&
|
@@ -48,7 +48,7 @@ module BlacklightAdvancedSearch::RenderConstraintsOverride
|
|
48
48
|
label = facet_field_label(field)
|
49
49
|
content << render_constraint_element(label,
|
50
50
|
safe_join(value_list, " <strong class='text-muted constraint-connector'>OR</strong> ".html_safe),
|
51
|
-
:remove =>
|
51
|
+
:remove => search_action_path( remove_advanced_filter_group(field, my_params).except(:controller, :action) )
|
52
52
|
)
|
53
53
|
end
|
54
54
|
end
|
@@ -15,7 +15,7 @@ module BlacklightAdvancedSearch
|
|
15
15
|
# Blacklight into local app as custom local override -- but add our link at the end too.
|
16
16
|
source_file = File.read(File.join(Blacklight.root, "app/views/catalog/_search_form.html.erb"))
|
17
17
|
|
18
|
-
new_file_contents = source_file + "\n\n<%= link_to 'More options', advanced_search_path(params), :class=>'advanced_search'%>"
|
18
|
+
new_file_contents = source_file + "\n\n<%= link_to 'More options', advanced_search_path(params.except(:controller, :action)), :class=>'advanced_search'%>"
|
19
19
|
|
20
20
|
create_file("app/views/catalog/_search_form.html.erb", new_file_contents)
|
21
21
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight_advanced_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Rochkind
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-10-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: blacklight
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '5.
|
20
|
+
version: '5.15'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '5.
|
27
|
+
version: '5.15'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: parslet
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -196,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
version: '0'
|
197
197
|
requirements: []
|
198
198
|
rubyforge_project: blacklight
|
199
|
-
rubygems_version: 2.4.
|
199
|
+
rubygems_version: 2.4.5
|
200
200
|
signing_key:
|
201
201
|
specification_version: 4
|
202
202
|
summary: Blacklight Advanced Search plugin
|