ckanext-search-tweaks 0.6.2__py3-none-any.whl → 1.0.0__py3-none-any.whl
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.
- ckanext/__init__.py +0 -1
- ckanext/search_tweaks/advanced_search/assets/advanced-search.css +0 -4
- ckanext/search_tweaks/advanced_search/plugin.py +11 -0
- ckanext/search_tweaks/advanced_search/templates/advanced_search/search_form.html +5 -3
- ckanext/search_tweaks/config_declaration.yaml +24 -0
- ckanext/search_tweaks/field_relevance/plugin.py +0 -2
- ckanext/search_tweaks/field_relevance/templates/search_tweaks/field_relevance/promote.html +1 -1
- ckanext/search_tweaks/field_relevance/views.py +18 -5
- ckanext/search_tweaks/interfaces.py +1 -3
- ckanext/search_tweaks/plugin.py +0 -1
- ckanext/search_tweaks/query_popularity/config_declaration.yaml +29 -0
- ckanext/search_tweaks/query_popularity/logic/schema.py +1 -0
- ckanext/search_tweaks/query_popularity/score.py +2 -1
- ckanext/search_tweaks/query_relevance/__init__.py +38 -13
- ckanext/search_tweaks/query_relevance/boost.py +75 -0
- ckanext/search_tweaks/query_relevance/cli.py +20 -38
- ckanext/search_tweaks/query_relevance/config.py +29 -0
- ckanext/search_tweaks/query_relevance/config_declaration.yaml +16 -0
- ckanext/search_tweaks/query_relevance/plugin.py +8 -37
- ckanext/search_tweaks/query_relevance/score.py +17 -50
- ckanext/search_tweaks/query_relevance/storage.py +79 -137
- ckanext/search_tweaks/spellcheck/helpers.py +6 -2
- ckanext/search_tweaks/tests/conftest.py +13 -0
- ckanext/search_tweaks/tests/query_relevance/test_plugin.py +5 -5
- ckanext/search_tweaks/tests/query_relevance/test_search.py +84 -0
- ckanext/search_tweaks/tests/query_relevance/test_storage.py +23 -99
- ckanext/search_tweaks/tests/spellcheck/test_plugin.py +4 -2
- {ckanext_search_tweaks-0.6.2.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/METADATA +122 -124
- ckanext_search_tweaks-1.0.0.dist-info/RECORD +58 -0
- {ckanext_search_tweaks-0.6.2.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/WHEEL +1 -1
- ckanext_search_tweaks-0.6.2.dist-info/RECORD +0 -52
- {ckanext_search_tweaks-0.6.2.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/entry_points.txt +0 -0
- {ckanext_search_tweaks-0.6.2.dist-info → ckanext_search_tweaks-1.0.0.dist-info/licenses}/LICENSE +0 -0
- {ckanext_search_tweaks-0.6.2.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/top_level.txt +0 -0
@@ -30,6 +30,7 @@ class TestDidYouMeanSnippet:
|
|
30
30
|
snippet = BeautifulSoup(tk.render("search_tweaks/did_you_mean.html"))
|
31
31
|
helper.assert_called()
|
32
32
|
link = snippet.select_one("a")
|
33
|
+
assert link
|
33
34
|
assert link.text.strip() == expected
|
34
35
|
assert "q=" + expected in link["href"]
|
35
36
|
|
@@ -37,6 +38,7 @@ class TestDidYouMeanSnippet:
|
|
37
38
|
@pytest.mark.ckanext_search_tweaks_modified_schema
|
38
39
|
@pytest.mark.ckan_config("ckan.plugins", "search_tweaks search_tweaks_spellcheck")
|
39
40
|
@pytest.mark.usefixtures("with_plugins", "clean_db", "clean_index")
|
41
|
+
@pytest.mark.skip(reason="Result might be unpredicatble, requires refactoring")
|
40
42
|
class TestHelper:
|
41
43
|
def test_recommendations(self):
|
42
44
|
Dataset(title="Pick this")
|
@@ -49,7 +51,7 @@ class TestHelper:
|
|
49
51
|
|
50
52
|
assert helper("pic", 3) == [
|
51
53
|
"pick",
|
52
|
-
] # min_hits
|
54
|
+
] # min_hits messed up because of single-term match
|
53
55
|
assert helper("pic", 1) == ["pick"]
|
54
56
|
|
55
57
|
def test_show_only_more_results(self, ckan_config, monkeypatch):
|
@@ -62,7 +64,7 @@ class TestHelper:
|
|
62
64
|
assert helper("pock", 1) == ["pick"]
|
63
65
|
assert helper("pick", 3) == [
|
64
66
|
"pock",
|
65
|
-
] # min_hits
|
67
|
+
] # min_hits messed up because of single-term match
|
66
68
|
|
67
69
|
monkeypatch.setitem(ckan_config, CONFIG_SHOW_ONLY_MORE, "off")
|
68
70
|
assert helper("pock", 1) == ["pick"]
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: ckanext-search-tweaks
|
3
|
-
Version: 0.
|
3
|
+
Version: 1.0.0
|
4
4
|
Author-email: DataShades <datashades@linkdigital.com.au>, Sergey Motornyuk <sergey.motornyuk@linkdigital.com.au>
|
5
5
|
Maintainer-email: DataShades <datashades@linkdigital.com.au>
|
6
6
|
License: AGPL
|
@@ -8,15 +8,20 @@ Project-URL: Homepage, https://github.com/DataShades/ckanext-search-tweaks
|
|
8
8
|
Keywords: CKAN
|
9
9
|
Classifier: Development Status :: 4 - Beta
|
10
10
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
11
|
-
Classifier: Programming Language :: Python :: 3.8
|
12
|
-
Classifier: Programming Language :: Python :: 3.9
|
13
11
|
Classifier: Programming Language :: Python :: 3.10
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
14
14
|
Description-Content-Type: text/markdown
|
15
15
|
License-File: LICENSE
|
16
16
|
Requires-Dist: freezegun
|
17
|
-
Requires-Dist:
|
18
|
-
Requires-Dist: ckanext-toolbelt
|
19
|
-
Provides-Extra:
|
17
|
+
Requires-Dist: typing_extensions>=4.0.0
|
18
|
+
Requires-Dist: ckanext-toolbelt>=0.6.6
|
19
|
+
Provides-Extra: dev
|
20
|
+
Requires-Dist: pytest-ckan; extra == "dev"
|
21
|
+
Requires-Dist: pytest-freezegun; extra == "dev"
|
22
|
+
Requires-Dist: pytest-factoryboy; extra == "dev"
|
23
|
+
Requires-Dist: pytest-rerunfailures; extra == "dev"
|
24
|
+
Dynamic: license-file
|
20
25
|
|
21
26
|
[](https://github.com/DataShades/ckanext-search-tweaks/actions)
|
22
27
|
|
@@ -30,8 +35,8 @@ Compatibility with core CKAN versions:
|
|
30
35
|
|
31
36
|
| CKAN version | Compatible? |
|
32
37
|
|-----------------|-------------|
|
33
|
-
| 2.
|
34
|
-
| 2.
|
38
|
+
| 2.9 and earlier | no |
|
39
|
+
| 2.10+ | yes |
|
35
40
|
|
36
41
|
|
37
42
|
## Installation
|
@@ -65,9 +70,6 @@ available. Bellow are listed all the plugins with their side effects.
|
|
65
70
|
| [search_tweaks_query_relevance](#search_tweaks_query_relevance) | Promote datasets that were visited most frequently for the current search query |
|
66
71
|
| [search_tweaks_field_relevance](#search_tweaks_field_relevance) | Promote dataset depending on value of it's field |
|
67
72
|
| [search_tweaks_spellcheck](#search_tweaks_spellcheck) | Provides "Did you mean?" feature |
|
68
|
-
<!--
|
69
|
-
| [search_tweaks_advanced_search](#search_tweaks_advanced_search) | Basic configuration of ckanext-composite-search's search form |
|
70
|
-
-->
|
71
73
|
|
72
74
|
### <a id="search_tweaks"></a> search_tweaks
|
73
75
|
|
@@ -79,16 +81,18 @@ extension is enabled.
|
|
79
81
|
- Enables `ckanext.search_tweaks.iterfaces.ISearchTweaks` interface with the
|
80
82
|
following methods:
|
81
83
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
84
|
+
```python
|
85
|
+
def get_search_boost_fn(self, search_params: dict[str, Any]) -> Optional[str]:
|
86
|
+
"""Returns optional boost function that will be applied to the search query.
|
87
|
+
"""
|
88
|
+
return None
|
86
89
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
90
|
+
def get_extra_qf(self, search_params: dict[str, Any]) -> Optional[str]:
|
91
|
+
"""Return an additional fragment of the Solr's qf.
|
92
|
+
This fragment will be appended to the current qf
|
93
|
+
"""
|
94
|
+
return None
|
95
|
+
```
|
92
96
|
|
93
97
|
#### CLI
|
94
98
|
|
@@ -99,30 +103,31 @@ following methods:
|
|
99
103
|
|
100
104
|
#### Config settings
|
101
105
|
|
102
|
-
|
103
|
-
|
104
|
-
|
106
|
+
```ini
|
107
|
+
# Rewrite the default value of the qf parameter sent to Solr
|
108
|
+
# (optional, default: value of ckan.lib.search.query.QUERY_FIELDS).
|
109
|
+
ckanext.search_tweaks.common.qf = title^5 text
|
105
110
|
|
106
|
-
|
107
|
-
|
108
|
-
|
111
|
+
# Search by misspelled queries.
|
112
|
+
# (optional, default: false).
|
113
|
+
ckanext.search_tweaks.common.fuzzy_search.enabled = on
|
109
114
|
|
110
|
-
|
111
|
-
|
112
|
-
|
115
|
+
# Maximum number of misspelled letters. Possible values are 1 and 2.
|
116
|
+
# (optional, default: 1).
|
117
|
+
ckanext.search_tweaks.common.fuzzy_search.distance = 2
|
113
118
|
|
114
|
-
|
115
|
-
|
116
|
-
|
119
|
+
# Use `boost` instead of `bf` when `edismax` query parser is active
|
120
|
+
# (optional, default: true).
|
121
|
+
ckanext.search_tweaks.common.prefer_boost = no
|
117
122
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
# Keep original query when using fuzzy search, e.g. "(hello~2) OR (hello)" if true
|
123
|
-
# (optional, default: true).
|
124
|
-
ckanext.search_tweaks.common.fuzzy_search.keep_original
|
123
|
+
# MinimumShouldMatch used in queries
|
124
|
+
# (optional, default: 1).
|
125
|
+
ckanext.search_tweaks.common.mm = 2<-1 5<80%
|
125
126
|
|
127
|
+
# Keep original query when using fuzzy search, e.g. "(hello~2) OR (hello)" if true
|
128
|
+
# (optional, default: true).
|
129
|
+
ckanext.search_tweaks.common.fuzzy_search.keep_original
|
130
|
+
```
|
126
131
|
|
127
132
|
---
|
128
133
|
|
@@ -132,57 +137,41 @@ Increase relevance of datasets for particular query depending on number of
|
|
132
137
|
direct visits of the dataset after running this search. I.e, if user searches
|
133
138
|
for `something` and then visits dataset **B** which is initially displayed in a
|
134
139
|
third row of search results, eventually this dataset will be displayed on the
|
135
|
-
second or even on the first row.
|
136
|
-
first stage, statistics collected and stored inside storage(redis, by default)
|
137
|
-
and then this statistics converted into numeric solr field via cronjob.
|
138
|
-
Finally, Solr's boost function that scales number of visits and improves score
|
139
|
-
for the given query is applied during search.
|
140
|
-
|
141
|
-
Following steps are required in order to configure this plugin:
|
142
|
-
|
143
|
-
- Add field that will store statistics to schema.xml(`query_relevance_` prefix
|
144
|
-
can be changed via config option):
|
145
|
-
|
146
|
-
<dynamicField name="query_relevance_*" type="int" indexed="true" stored="true"/>
|
140
|
+
second or even on the first row.
|
147
141
|
|
148
|
-
|
149
|
-
|
150
|
-
|
142
|
+
This is implemented in two stages:
|
143
|
+
- In the first stage, statistics are collected and stored in Redis.
|
144
|
+
- During search, we apply Solr's boost function to scale the dataset score based on the number of visits.
|
151
145
|
|
152
146
|
#### CLI
|
153
147
|
|
154
|
-
|
155
|
-
|
156
|
-
is affected by this command - all records older than `query_relevance.daily.age` days are removed.
|
148
|
+
```
|
149
|
+
relevance query export - export statistics as CSV.
|
157
150
|
|
158
|
-
|
151
|
+
relevance query import - import statistics from CSV. Note, records that are already in storage but
|
152
|
+
are not listed in CSV won't be removed. It must be done manually
|
159
153
|
|
160
|
-
|
161
|
-
|
154
|
+
relevance query reset - reset all the query relevance scores
|
155
|
+
```
|
162
156
|
|
163
157
|
|
164
158
|
#### Config settings
|
165
159
|
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
ckanext.search_tweaks.query_relevance.backend = redis-permanent
|
171
|
-
|
172
|
-
# How long(in days) information about dataset visits will be stored in order to
|
173
|
-
# update relevance of dataset in search query.
|
174
|
-
# (optional, default: 90).
|
175
|
-
ckanext.search_tweaks.query_relevance.daily.age = 90
|
160
|
+
```ini
|
161
|
+
# Minimum boost to apply to a search query
|
162
|
+
# (optional, default: 1).
|
163
|
+
ckanext.search_tweaks.query_relevance.min_boost = 1
|
176
164
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
ckanext.search_tweaks.query_relevance.boost_function = recip($field,1,1000,1000)
|
165
|
+
# Maximum boost to apply to a search query. Set more to promote datasets higher
|
166
|
+
# (optional, default: 1.5).
|
167
|
+
ckanext.search_tweaks.query_relevance.max_boost = 2
|
181
168
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
169
|
+
# Maximum number of boosts to apply to a search query
|
170
|
+
# Set more to promote more datasets at once. Note, that a higher
|
171
|
+
# number of boosts may increase the query time.
|
172
|
+
# (optional, default: 60).
|
173
|
+
ckanext.search_tweaks.query_relevance.max_boost_count = 60
|
174
|
+
```
|
186
175
|
|
187
176
|
---
|
188
177
|
### <a id="search_tweaks_field_relevance"></a> search_tweaks_field_relevance
|
@@ -198,17 +187,20 @@ line of code.
|
|
198
187
|
|
199
188
|
#### Config settings
|
200
189
|
|
201
|
-
|
202
|
-
|
203
|
-
|
190
|
+
```ini
|
191
|
+
# Solr boost function for static numeric field
|
192
|
+
# (optional, default: None).
|
193
|
+
ckanext.search_tweaks.field_relevance.boost_function = pow(promoted_level,2)
|
204
194
|
|
205
|
-
|
206
|
-
|
207
|
-
|
195
|
+
# Field with dataset promotion level
|
196
|
+
# (optional, default: promotion_level).
|
197
|
+
ckanext.search_tweaks.field_relevance.blueprint.promotion.field_name = promotion
|
198
|
+
|
199
|
+
# Register pacakge promotion route
|
200
|
+
# (optional, default: False).
|
201
|
+
ckanext.search_tweaks.field_relevance.blueprint.promotion.enabled = true
|
202
|
+
```
|
208
203
|
|
209
|
-
# Register pacakge promotion route
|
210
|
-
# (optional, default: False).
|
211
|
-
ckanext.search_tweaks.field_relevance.blueprint.promotion.enabled = true
|
212
204
|
|
213
205
|
#### Auth functions
|
214
206
|
|
@@ -227,42 +219,54 @@ use it:
|
|
227
219
|
name="spellcheck" class="solr.SpellCheckComponent">` section and add the
|
228
220
|
following item under it:
|
229
221
|
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
222
|
+
```xml
|
223
|
+
<lst name="spellchecker">
|
224
|
+
<str name="name">did_you_mean</str>
|
225
|
+
<str name="field">did_you_mean</str>
|
226
|
+
<str name="buildOnCommit">false</str>
|
227
|
+
</lst>
|
228
|
+
```
|
235
229
|
|
236
230
|
- Add cron job that will update suggestions dictionary periodically:
|
237
231
|
|
238
|
-
|
232
|
+
```sh
|
233
|
+
ckan search-tweaks spellcheck rebuild
|
234
|
+
```
|
239
235
|
|
240
236
|
- `solrconfig.xml`. Add spellcheck component to the search handler (`<requestHandler
|
241
237
|
name="/select" class="solr.SearchHandler">`):
|
242
238
|
|
243
|
-
|
244
|
-
|
245
|
-
|
239
|
+
```xml
|
240
|
+
<arr name="last-components">
|
241
|
+
<str>spellcheck</str>
|
242
|
+
</arr>
|
243
|
+
```
|
246
244
|
|
247
245
|
- Define spellcheck field in the schema. If you want to use an existing
|
248
246
|
field(`text` for example), change `<str name="field">did_you_mean</str>`
|
249
247
|
value inside `solrconfig.xml` to the name of the selected field instead.
|
250
248
|
|
251
|
-
|
249
|
+
```xml
|
250
|
+
<field name="did_you_mean" type="textgen" indexed="true" multiValued="true" />
|
251
|
+
```
|
252
252
|
|
253
253
|
- **Note:** skip if you've decided to use an existing field in the previous step.
|
254
254
|
<br/>
|
255
255
|
Copy meaningfull values into this field:
|
256
256
|
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
257
|
+
```xml
|
258
|
+
<copyField source="title" dest="did_you_mean"/>
|
259
|
+
<copyField source="notes" dest="did_you_mean"/>
|
260
|
+
<copyField source="res_name" dest="did_you_mean"/>
|
261
|
+
<copyField source="res_description" dest="did_you_mean"/>
|
262
|
+
<copyField source="extras_*" dest="did_you_mean"/>
|
263
|
+
```
|
262
264
|
|
263
265
|
After that you have to restart Solr service and rebuild search index:
|
264
266
|
|
265
|
-
|
267
|
+
```sh
|
268
|
+
ckan search-index rebuild
|
269
|
+
```
|
266
270
|
|
267
271
|
Now you can use `spellcheck_did_you_mean` template helper that returns better
|
268
272
|
search query when available instead of the current one. Consider including
|
@@ -270,39 +274,33 @@ search query when available instead of the current one. Consider including
|
|
270
274
|
|
271
275
|
#### Config settings
|
272
276
|
|
273
|
-
|
274
|
-
|
275
|
-
|
277
|
+
```ini
|
278
|
+
# Do not show suggestions that have fewer results than current query
|
279
|
+
# (optional, default: true).
|
280
|
+
ckanext.search_tweaks.spellcheck.more_results_only = off
|
276
281
|
|
277
|
-
|
278
|
-
|
279
|
-
|
282
|
+
# How many different suggestions you expect to see for query
|
283
|
+
# (optional, default: 1).
|
284
|
+
ckanext.search_tweaks.spellcheck.max_suggestions = 3
|
285
|
+
```
|
280
286
|
|
281
287
|
#### CLI
|
282
288
|
|
283
289
|
spellcheck rebuild - rebuild/reload spellcheck dictionary.
|
284
290
|
|
285
291
|
---
|
286
|
-
<!--
|
287
|
-
### <a id="search_tweaks_advanced_search"></a> search_tweaks_advanced_search
|
288
|
-
|
289
|
-
Configure `ckanext-composite-search` for the basic usage. One need
|
290
|
-
`composite_search default_composite_search` plugins enabled in order to use
|
291
|
-
this plugin. It registers `advanced_search/search_form.html` snippet which can
|
292
|
-
be just used instead of `search_input` block of CKAN's
|
293
|
-
`snippets/search_form.html`. It can take a number of parameters, check its
|
294
|
-
content for details.
|
295
|
-
-->
|
296
292
|
|
297
293
|
## Developer installation
|
298
294
|
|
299
295
|
To install ckanext-search-tweaks for development, activate your CKAN virtualenv and
|
300
296
|
do:
|
301
297
|
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
298
|
+
```sh
|
299
|
+
git clone https://github.com/DataShades/ckanext-search-tweaks.git
|
300
|
+
cd ckanext-search-tweaks
|
301
|
+
python setup.py develop
|
302
|
+
pip install -r dev-requirements.txt
|
303
|
+
```
|
306
304
|
|
307
305
|
|
308
306
|
## Tests
|
@@ -0,0 +1,58 @@
|
|
1
|
+
ckanext/__init__.py,sha256=bA4GtkniRdq2--6cjASDLRM4gCsX_ysGJkaTMSmIQY8,202
|
2
|
+
ckanext/search_tweaks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
ckanext/search_tweaks/cli.py,sha256=Pex34fMESkVycy6kOfODtNmHh8nPMvzFKTeZD0txLvc,308
|
4
|
+
ckanext/search_tweaks/config.py,sha256=NX7rsslGJyxQ8xTZidy9fI-SDkJ4lX4oLTX54lVLGI0,941
|
5
|
+
ckanext/search_tweaks/config_declaration.yaml,sha256=XrlvWGhlnVPGTJfbRj4Fxf0o8Q9UiS1bYKolnAoY8bg,644
|
6
|
+
ckanext/search_tweaks/interfaces.py,sha256=hzk5RvBWUgLEedYGi7i-d7NxcbOWH45g3kiPQGFIEyU,859
|
7
|
+
ckanext/search_tweaks/plugin.py,sha256=L7zXLwMT38ipG-dNn-UHrxhoLfKVtKTXPaIy5MGsclI,3329
|
8
|
+
ckanext/search_tweaks/shared.py,sha256=9aWN_OXB5-h99lecnZVoZpLY6F8hbIRNX6WUQaoOoYI,325
|
9
|
+
ckanext/search_tweaks/advanced_search/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
+
ckanext/search_tweaks/advanced_search/plugin.py,sha256=Vf4w23VonG4anHBW-7QpPTT5Afw5cGrt6cL2LyaLqkk,3566
|
11
|
+
ckanext/search_tweaks/advanced_search/assets/advanced-search.css,sha256=PfoqFHogxxY-FHfmAYwLF2YpIqaGzl9xDKUbKwhi0sk,532
|
12
|
+
ckanext/search_tweaks/advanced_search/assets/advanced-search.js,sha256=rkgprbv9fUnWoxgISXmoxHkSC4Z9OLXgZoOIICpn9X8,2328
|
13
|
+
ckanext/search_tweaks/advanced_search/assets/webassets.yml,sha256=g0NMsLyHzslxtkIXRFj_Vf-SU6b8MYlBiuHc50SQiAo,439
|
14
|
+
ckanext/search_tweaks/advanced_search/templates/advanced_search/search_form.html,sha256=c4PNY-HLcoLUrXVoOs3qsdEhaT7hsB4JzVUIp7ggee0,4387
|
15
|
+
ckanext/search_tweaks/field_relevance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
+
ckanext/search_tweaks/field_relevance/plugin.py,sha256=XlKLsttiijUTVicNPdOqtNU7x9Pt_Ax5ArKxuQWAWCs,1317
|
17
|
+
ckanext/search_tweaks/field_relevance/views.py,sha256=GGE29mrdT42CufEzdEgX2HMxi77VeKpXrGmWgWFDBbY,3444
|
18
|
+
ckanext/search_tweaks/field_relevance/assets/search-tweaks-reflect-range-in-label.js,sha256=WFAzPBvzf6SWaEAQJTxiEGhZm-65o676MN6KttCpvbo,490
|
19
|
+
ckanext/search_tweaks/field_relevance/assets/webassets.yml,sha256=PGr_EC4jOTABCRc3JCIAqYCzCMNgGG1KYE6Ua0S0vfk,184
|
20
|
+
ckanext/search_tweaks/field_relevance/templates/search_tweaks/field_relevance/promote.html,sha256=yMoVwcpiSl7XM-EaoznDe5MiRY3G1zcBywAI1IZhKj4,1144
|
21
|
+
ckanext/search_tweaks/query_popularity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
+
ckanext/search_tweaks/query_popularity/config.py,sha256=O-YptWOeDQ6tyVLZ10D3dVs5tGhjOoOtFY3Xw_InmjA,858
|
23
|
+
ckanext/search_tweaks/query_popularity/config_declaration.yaml,sha256=asztZ5jFcfOQoS0Wq-pC41scC3w2ahNEP2AhIMMO2PM,866
|
24
|
+
ckanext/search_tweaks/query_popularity/plugin.py,sha256=ih9c7CrI-A1ilfe9I1Hb_3BdMOnzNsTyMfJA7c0Qs8A,1391
|
25
|
+
ckanext/search_tweaks/query_popularity/score.py,sha256=OEwO8BREcn56lmtvuv5kzHnDJ1ziaX9Wz_iuWGYs5aM,1079
|
26
|
+
ckanext/search_tweaks/query_popularity/logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
|
+
ckanext/search_tweaks/query_popularity/logic/action.py,sha256=uG6IdAX2b8YztmcxiAho3A6-S41IPrRhvyV36CAM95g,1422
|
28
|
+
ckanext/search_tweaks/query_popularity/logic/auth.py,sha256=6jddjTxo9NX_a-_jQz_8Mj7273zfkfZz1_BOW6JzHm0,670
|
29
|
+
ckanext/search_tweaks/query_popularity/logic/schema.py,sha256=x1n-oLAI1IXdEm4WDzs4Mq5Ztrf8TLLIa6CHaZSc8tA,302
|
30
|
+
ckanext/search_tweaks/query_relevance/__init__.py,sha256=KGaxX2ttGBdCwCRFNc1adSsEbLXAJgFjQBXlEV2MGYw,2077
|
31
|
+
ckanext/search_tweaks/query_relevance/boost.py,sha256=hCswLDzwxVymeQXXf63EwpZC5tovI46288zl5CLVaU4,1965
|
32
|
+
ckanext/search_tweaks/query_relevance/cli.py,sha256=-WzLEAGqUlXGqmLPxJ8c-6oOCqc1i0wCWNEBJhdThXg,1698
|
33
|
+
ckanext/search_tweaks/query_relevance/config.py,sha256=Jxpxt7kZ6NTmirNKClBB-nLf12vBPkUldUZeFoSoQ_c,758
|
34
|
+
ckanext/search_tweaks/query_relevance/config_declaration.yaml,sha256=HMz_pP_bzI3GjJCROL5fpGBlESGuNqZyUUEyFYws80s,569
|
35
|
+
ckanext/search_tweaks/query_relevance/plugin.py,sha256=1Ynqaqrr-TBRoxCuMXnTds-B7HWKVBVLcBUr-twum6k,1426
|
36
|
+
ckanext/search_tweaks/query_relevance/score.py,sha256=q5e8lSTJb4vvvmNyj5lHHMpgocixafsJOVt_RFo5uJ4,1129
|
37
|
+
ckanext/search_tweaks/query_relevance/storage.py,sha256=Iskir3fgwWhEprQt5xEPRpYWC70rsNXEHS4SslKpqvM,3101
|
38
|
+
ckanext/search_tweaks/spellcheck/__init__.py,sha256=Af3LHk9L82QtAh4q7C3srzCwJiF6WCtxe4CFTPKhFMQ,1401
|
39
|
+
ckanext/search_tweaks/spellcheck/cli.py,sha256=X1HAXhElqJ6Hrc30USxXG50F-1RS0uvxP2tr3S6jnK0,250
|
40
|
+
ckanext/search_tweaks/spellcheck/helpers.py,sha256=K8ciOZrFYx_6PPRxvQQgUYkPil0oqTktURged_Uhk-I,4486
|
41
|
+
ckanext/search_tweaks/spellcheck/plugin.py,sha256=lKRNAl5V9REnjTNOhC9e4AfGLAw3wm3oQTwjS8hGofY,592
|
42
|
+
ckanext/search_tweaks/spellcheck/templates/search_tweaks/did_you_mean.html,sha256=5IAoogXrnYb8KecOLaPKQUerYCwkbEP5SQVjekeduHM,654
|
43
|
+
ckanext/search_tweaks/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
|
+
ckanext/search_tweaks/tests/conftest.py,sha256=76xLSBLTP2cN9-gMWdY1-5EWLt5iDHE8W3t1wCPhxaU,987
|
45
|
+
ckanext/search_tweaks/tests/test_plugin.py,sha256=WVnGzQP5nHzIht7PJEEIFrJ92tq5XuivQ0o8UNiRXSs,4763
|
46
|
+
ckanext/search_tweaks/tests/query_relevance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
+
ckanext/search_tweaks/tests/query_relevance/test_plugin.py,sha256=gdf_-fojz8TPSkp2Ebxe6c0gIJHI3xDuttE3bnmRkO0,2247
|
48
|
+
ckanext/search_tweaks/tests/query_relevance/test_score.py,sha256=RwG_o8QyW3BZBx3J5Cs1UUkMHi0DGR-mWvlSlk3ibaU,1140
|
49
|
+
ckanext/search_tweaks/tests/query_relevance/test_search.py,sha256=SqLmrnWKH2yz_PGe_PX4f6HFaBA8vUhsq6msejCfsSM,2868
|
50
|
+
ckanext/search_tweaks/tests/query_relevance/test_storage.py,sha256=za9mgPTb-cQXpk73dP2jEoR_740FTl3x1Ba3lRLUpUA,954
|
51
|
+
ckanext/search_tweaks/tests/spellcheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
|
+
ckanext/search_tweaks/tests/spellcheck/test_plugin.py,sha256=LBUX3Xe6_o5MBwK5V1POMSPnT0WpPdJvb7axh3Ha1ko,2617
|
53
|
+
ckanext_search_tweaks-1.0.0.dist-info/licenses/LICENSE,sha256=2lWcRAHjsQhqavGNnR30Ymxq3GJ9BaYL_dnfGO_-WFA,34500
|
54
|
+
ckanext_search_tweaks-1.0.0.dist-info/METADATA,sha256=QbxuCs5e7A6TwW_wGbV0xczmtbuJIhLH2_xxPfYFf1E,10758
|
55
|
+
ckanext_search_tweaks-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
56
|
+
ckanext_search_tweaks-1.0.0.dist-info/entry_points.txt,sha256=0hvD0BILJCAPZBOTH28bAMN8XCbPrltTZ6Q8-mUZGyE,615
|
57
|
+
ckanext_search_tweaks-1.0.0.dist-info/top_level.txt,sha256=5yjNwq-s42weaiMMUuA5lZ45g99ANsfcRBCvac1JMS4,8
|
58
|
+
ckanext_search_tweaks-1.0.0.dist-info/RECORD,,
|
@@ -1,52 +0,0 @@
|
|
1
|
-
ckanext/__init__.py,sha256=xsigU4VzvLfcHEa08OUsv-05ZXU-qwjs3Y3f6PWA7fY,203
|
2
|
-
ckanext/search_tweaks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
ckanext/search_tweaks/cli.py,sha256=Pex34fMESkVycy6kOfODtNmHh8nPMvzFKTeZD0txLvc,308
|
4
|
-
ckanext/search_tweaks/config.py,sha256=NX7rsslGJyxQ8xTZidy9fI-SDkJ4lX4oLTX54lVLGI0,941
|
5
|
-
ckanext/search_tweaks/interfaces.py,sha256=pOu2PyMVxu7XDyGCvP42upm5N4Ws1KR0qzyW8wE2CGY,869
|
6
|
-
ckanext/search_tweaks/plugin.py,sha256=Bk1ejlTsKxUcIjckuzQBj_nwUbIz7H5t-AwqtmCvaIw,3330
|
7
|
-
ckanext/search_tweaks/shared.py,sha256=9aWN_OXB5-h99lecnZVoZpLY6F8hbIRNX6WUQaoOoYI,325
|
8
|
-
ckanext/search_tweaks/advanced_search/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
|
-
ckanext/search_tweaks/advanced_search/plugin.py,sha256=yYjC-ow-fFfvUOGJfsl3OpkifdrcqA_kWI9j-9lyVhI,3242
|
10
|
-
ckanext/search_tweaks/advanced_search/assets/advanced-search.css,sha256=KlBYOihUJepiu2iiGcRjIWZltogEqI8iGbO-28Wgnqw,584
|
11
|
-
ckanext/search_tweaks/advanced_search/assets/advanced-search.js,sha256=rkgprbv9fUnWoxgISXmoxHkSC4Z9OLXgZoOIICpn9X8,2328
|
12
|
-
ckanext/search_tweaks/advanced_search/assets/webassets.yml,sha256=g0NMsLyHzslxtkIXRFj_Vf-SU6b8MYlBiuHc50SQiAo,439
|
13
|
-
ckanext/search_tweaks/advanced_search/templates/advanced_search/search_form.html,sha256=QlKCxEUDGP1g4oZEOKAGSuopjrJsbcgK2cs28k3X4Vc,4266
|
14
|
-
ckanext/search_tweaks/field_relevance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
|
-
ckanext/search_tweaks/field_relevance/plugin.py,sha256=f5VQcu5PfBncXM6WVLsMDze9fQe20LmNvot51mui3Jg,1338
|
16
|
-
ckanext/search_tweaks/field_relevance/views.py,sha256=Qt8YuryPaDlwNKN8yfdQg0M1B8o9kYAeOXyvsAger2o,3089
|
17
|
-
ckanext/search_tweaks/field_relevance/assets/search-tweaks-reflect-range-in-label.js,sha256=WFAzPBvzf6SWaEAQJTxiEGhZm-65o676MN6KttCpvbo,490
|
18
|
-
ckanext/search_tweaks/field_relevance/assets/webassets.yml,sha256=PGr_EC4jOTABCRc3JCIAqYCzCMNgGG1KYE6Ua0S0vfk,184
|
19
|
-
ckanext/search_tweaks/field_relevance/templates/search_tweaks/field_relevance/promote.html,sha256=uqB9Wf7OJzF3-Ep6VZwe3bYICdzy0JhJPJzNPuMLBr0,1118
|
20
|
-
ckanext/search_tweaks/query_popularity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
-
ckanext/search_tweaks/query_popularity/config.py,sha256=O-YptWOeDQ6tyVLZ10D3dVs5tGhjOoOtFY3Xw_InmjA,858
|
22
|
-
ckanext/search_tweaks/query_popularity/plugin.py,sha256=ih9c7CrI-A1ilfe9I1Hb_3BdMOnzNsTyMfJA7c0Qs8A,1391
|
23
|
-
ckanext/search_tweaks/query_popularity/score.py,sha256=JfOiR7yj22euNrIX3T_VYjzB7ilGpDmr4hmXFHfsSAc,1052
|
24
|
-
ckanext/search_tweaks/query_popularity/logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
-
ckanext/search_tweaks/query_popularity/logic/action.py,sha256=uG6IdAX2b8YztmcxiAho3A6-S41IPrRhvyV36CAM95g,1422
|
26
|
-
ckanext/search_tweaks/query_popularity/logic/auth.py,sha256=6jddjTxo9NX_a-_jQz_8Mj7273zfkfZz1_BOW6JzHm0,670
|
27
|
-
ckanext/search_tweaks/query_popularity/logic/schema.py,sha256=rgjmRyGb7zlBOLZo284XcH9F6VepmIv5yvoxTGxLByA,301
|
28
|
-
ckanext/search_tweaks/query_relevance/__init__.py,sha256=mGpZuwY8UwPMuxjNLhGVYoaXPfLx5UPMixpldIjZuSY,1467
|
29
|
-
ckanext/search_tweaks/query_relevance/cli.py,sha256=7wU3nWdCQNaUi2O_zARy7usvUysE-wnp5h_yRlw7nAo,2576
|
30
|
-
ckanext/search_tweaks/query_relevance/plugin.py,sha256=W9qmwWD_wThedqpLNgxNY--N0TsHtPDoW4EfcbaWGhw,2448
|
31
|
-
ckanext/search_tweaks/query_relevance/score.py,sha256=hfrfgNP5OUf7YBBDuFFBZb66ixpiAlnM-KAXzUVexXc,1811
|
32
|
-
ckanext/search_tweaks/query_relevance/storage.py,sha256=7SP1arTjTvbHrWDZhzu9E0pWxk4ygz3NcpDk7P4YODk,4852
|
33
|
-
ckanext/search_tweaks/spellcheck/__init__.py,sha256=Af3LHk9L82QtAh4q7C3srzCwJiF6WCtxe4CFTPKhFMQ,1401
|
34
|
-
ckanext/search_tweaks/spellcheck/cli.py,sha256=X1HAXhElqJ6Hrc30USxXG50F-1RS0uvxP2tr3S6jnK0,250
|
35
|
-
ckanext/search_tweaks/spellcheck/helpers.py,sha256=khlpo5acwxUZ4lDNH9V3EP1BAvLf1-Z6UY_dQCPqOow,4397
|
36
|
-
ckanext/search_tweaks/spellcheck/plugin.py,sha256=lKRNAl5V9REnjTNOhC9e4AfGLAw3wm3oQTwjS8hGofY,592
|
37
|
-
ckanext/search_tweaks/spellcheck/templates/search_tweaks/did_you_mean.html,sha256=5IAoogXrnYb8KecOLaPKQUerYCwkbEP5SQVjekeduHM,654
|
38
|
-
ckanext/search_tweaks/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
|
-
ckanext/search_tweaks/tests/conftest.py,sha256=Moxwo1WE8Yl6su50C7bqG6IEH3t38UW4PtfHe1SiiAk,662
|
40
|
-
ckanext/search_tweaks/tests/test_plugin.py,sha256=WVnGzQP5nHzIht7PJEEIFrJ92tq5XuivQ0o8UNiRXSs,4763
|
41
|
-
ckanext/search_tweaks/tests/query_relevance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
42
|
-
ckanext/search_tweaks/tests/query_relevance/test_plugin.py,sha256=RBraEO6_LMvHx9ekDz_h8LgtpEJV8BkR3q-9QotRGWA,2196
|
43
|
-
ckanext/search_tweaks/tests/query_relevance/test_score.py,sha256=RwG_o8QyW3BZBx3J5Cs1UUkMHi0DGR-mWvlSlk3ibaU,1140
|
44
|
-
ckanext/search_tweaks/tests/query_relevance/test_storage.py,sha256=xBHB69zHE301mHlUB2hz0RXJaqFrhRMesAz2LNYNFE0,2825
|
45
|
-
ckanext/search_tweaks/tests/spellcheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
46
|
-
ckanext/search_tweaks/tests/spellcheck/test_plugin.py,sha256=4pocLV8uzea2ua8LUTC3IXlyYc3oKbhApODA1uWHNFU,2517
|
47
|
-
ckanext_search_tweaks-0.6.2.dist-info/LICENSE,sha256=2lWcRAHjsQhqavGNnR30Ymxq3GJ9BaYL_dnfGO_-WFA,34500
|
48
|
-
ckanext_search_tweaks-0.6.2.dist-info/METADATA,sha256=IIGP0lRm0r51UeLK7khGVxxzVKzyJVY_ba2AvLPIVy8,12249
|
49
|
-
ckanext_search_tweaks-0.6.2.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
50
|
-
ckanext_search_tweaks-0.6.2.dist-info/entry_points.txt,sha256=0hvD0BILJCAPZBOTH28bAMN8XCbPrltTZ6Q8-mUZGyE,615
|
51
|
-
ckanext_search_tweaks-0.6.2.dist-info/top_level.txt,sha256=5yjNwq-s42weaiMMUuA5lZ45g99ANsfcRBCvac1JMS4,8
|
52
|
-
ckanext_search_tweaks-0.6.2.dist-info/RECORD,,
|
{ckanext_search_tweaks-0.6.2.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/entry_points.txt
RENAMED
File without changes
|
{ckanext_search_tweaks-0.6.2.dist-info → ckanext_search_tweaks-1.0.0.dist-info/licenses}/LICENSE
RENAMED
File without changes
|
{ckanext_search_tweaks-0.6.2.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/top_level.txt
RENAMED
File without changes
|