ckanext-search-tweaks 0.6.3__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.
Files changed (30) hide show
  1. ckanext/__init__.py +0 -1
  2. ckanext/search_tweaks/advanced_search/assets/advanced-search.css +0 -4
  3. ckanext/search_tweaks/advanced_search/plugin.py +11 -0
  4. ckanext/search_tweaks/advanced_search/templates/advanced_search/search_form.html +5 -3
  5. ckanext/search_tweaks/field_relevance/plugin.py +0 -2
  6. ckanext/search_tweaks/field_relevance/views.py +10 -5
  7. ckanext/search_tweaks/interfaces.py +1 -3
  8. ckanext/search_tweaks/plugin.py +0 -1
  9. ckanext/search_tweaks/query_popularity/logic/schema.py +1 -0
  10. ckanext/search_tweaks/query_popularity/score.py +2 -1
  11. ckanext/search_tweaks/query_relevance/__init__.py +38 -13
  12. ckanext/search_tweaks/query_relevance/boost.py +75 -0
  13. ckanext/search_tweaks/query_relevance/cli.py +16 -54
  14. ckanext/search_tweaks/query_relevance/config.py +29 -0
  15. ckanext/search_tweaks/query_relevance/config_declaration.yaml +16 -0
  16. ckanext/search_tweaks/query_relevance/plugin.py +8 -27
  17. ckanext/search_tweaks/query_relevance/score.py +17 -50
  18. ckanext/search_tweaks/query_relevance/storage.py +79 -137
  19. ckanext/search_tweaks/spellcheck/helpers.py +6 -2
  20. ckanext/search_tweaks/tests/conftest.py +13 -0
  21. ckanext/search_tweaks/tests/query_relevance/test_plugin.py +5 -5
  22. ckanext/search_tweaks/tests/query_relevance/test_search.py +84 -0
  23. ckanext/search_tweaks/tests/query_relevance/test_storage.py +23 -99
  24. ckanext/search_tweaks/tests/spellcheck/test_plugin.py +4 -2
  25. {ckanext_search_tweaks-0.6.3.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/METADATA +121 -123
  26. {ckanext_search_tweaks-0.6.3.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/RECORD +30 -26
  27. {ckanext_search_tweaks-0.6.3.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/WHEEL +1 -1
  28. {ckanext_search_tweaks-0.6.3.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/entry_points.txt +0 -0
  29. {ckanext_search_tweaks-0.6.3.dist-info → ckanext_search_tweaks-1.0.0.dist-info/licenses}/LICENSE +0 -0
  30. {ckanext_search_tweaks-0.6.3.dist-info → ckanext_search_tweaks-1.0.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: ckanext-search-tweaks
3
- Version: 0.6.3
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
17
  Requires-Dist: typing_extensions>=4.0.0
18
- Requires-Dist: ckanext-toolbelt>=0.4.11
19
- Provides-Extra: advanced-search
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
  [![Tests](https://github.com/DataShades/ckanext-search-tweaks/actions/workflows/test.yml/badge.svg?branch=master)](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.8 and earlier | no |
34
- | 2.9 | yes |
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
- def get_search_boost_fn(self, search_params: dict[str, Any]) -> Optional[str]:
83
- """Returns optional boost function that will be applied to the search query.
84
- """
85
- return None
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
- def get_extra_qf(self, search_params: dict[str, Any]) -> Optional[str]:
88
- """Return an additional fragment of the Solr's qf.
89
- This fragment will be appended to the current qf
90
- """
91
- return None
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
- # Rewrite the default value of the qf parameter sent to Solr
103
- # (optional, default: value of ckan.lib.search.query.QUERY_FIELDS).
104
- ckanext.search_tweaks.common.qf = title^5 text
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
- # Search by misspelled queries.
107
- # (optional, default: false).
108
- ckanext.search_tweaks.common.fuzzy_search.enabled = on
111
+ # Search by misspelled queries.
112
+ # (optional, default: false).
113
+ ckanext.search_tweaks.common.fuzzy_search.enabled = on
109
114
 
110
- # Maximum number of misspelled letters. Possible values are 1 and 2.
111
- # (optional, default: 1).
112
- ckanext.search_tweaks.common.fuzzy_search.distance = 2
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
- # Use `boost` instead of `bf` when `edismax` query parser is active
115
- # (optional, default: true).
116
- ckanext.search_tweaks.common.prefer_boost = no
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
- # MinimumShouldMatch used in queries
119
- # (optional, default: 1).
120
- ckanext.search_tweaks.common.mm = 2<-1 5<80%
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. This is implemented in three stages. On the
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
- - Configure a cronjob which will update search-index periodically:
149
-
150
- 0 0 * * * ckan search-index rebuild
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
- relevance query align - remove old data from storage. Actual result of this command depends
155
- on storage backend, that is controlled by config. At the momment, only `redis-daily` backend
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
- relevance query export - export statistics as CSV.
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
- relevance query import - import statistics from CSV. Note, records that are already in storage but
161
- are not listed in CSV won't be removed. It must be done manually
154
+ relevance query reset - reset all the query relevance scores
155
+ ```
162
156
 
163
157
 
164
158
  #### Config settings
165
159
 
166
- # Which backend to use in order to collect information about dataset
167
- # relevance for the particular search query. Possible values are:
168
- # "redis-permanent", "redis-daily"
169
- # (optional, default: redis-daily).
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
- # Solr boost function with $field placeholder that will be replaced by
178
- # the correspoinding field name
179
- # (optional, default: "scale(def($field,0),1,1.2)").
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
- # Prefix of the numeric field defined in Solr schema. This field will hold
183
- # dataset's relevance for the given query.
184
- # (optional, default: query_relevance_).
185
- ckanext.search_tweaks.query_relevance.field_prefix = custom_score_
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
- # Solr boost function for static numeric field
202
- # (optional, default: None).
203
- ckanext.search_tweaks.field_relevance.boost_function = pow(promoted_level,2)
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
- # Field with dataset promotion level
206
- # (optional, default: promotion_level).
207
- ckanext.search_tweaks.field_relevance.blueprint.promotion.field_name = promotion
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
- <lst name="spellchecker">
231
- <str name="name">did_you_mean</str>
232
- <str name="field">did_you_mean</str>
233
- <str name="buildOnCommit">false</str>
234
- </lst>
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
- ckan search-tweaks spellcheck rebuild
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
- <arr name="last-components">
244
- <str>spellcheck</str>
245
- </arr>
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
- <field name="did_you_mean" type="textgen" indexed="true" multiValued="true" />
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
- <copyField source="title" dest="did_you_mean"/>
258
- <copyField source="notes" dest="did_you_mean"/>
259
- <copyField source="res_name" dest="did_you_mean"/>
260
- <copyField source="res_description" dest="did_you_mean"/>
261
- <copyField source="extras_*" dest="did_you_mean"/>
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
- ckan search-index rebuild
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
- # Do not show suggestions that have fewer results than current query
274
- # (optional, default: true).
275
- ckanext.search_tweaks.spellcheck.more_results_only = off
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
- # How many different suggestions you expect to see for query
278
- # (optional, default: 1).
279
- ckanext.search_tweaks.spellcheck.max_suggestions = 3
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
- git clone https://github.com/DataShades/ckanext-search-tweaks.git
303
- cd ckanext-search-tweaks
304
- python setup.py develop
305
- pip install -r dev-requirements.txt
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
@@ -1,20 +1,20 @@
1
- ckanext/__init__.py,sha256=xsigU4VzvLfcHEa08OUsv-05ZXU-qwjs3Y3f6PWA7fY,203
1
+ ckanext/__init__.py,sha256=bA4GtkniRdq2--6cjASDLRM4gCsX_ysGJkaTMSmIQY8,202
2
2
  ckanext/search_tweaks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  ckanext/search_tweaks/cli.py,sha256=Pex34fMESkVycy6kOfODtNmHh8nPMvzFKTeZD0txLvc,308
4
4
  ckanext/search_tweaks/config.py,sha256=NX7rsslGJyxQ8xTZidy9fI-SDkJ4lX4oLTX54lVLGI0,941
5
5
  ckanext/search_tweaks/config_declaration.yaml,sha256=XrlvWGhlnVPGTJfbRj4Fxf0o8Q9UiS1bYKolnAoY8bg,644
6
- ckanext/search_tweaks/interfaces.py,sha256=pOu2PyMVxu7XDyGCvP42upm5N4Ws1KR0qzyW8wE2CGY,869
7
- ckanext/search_tweaks/plugin.py,sha256=Bk1ejlTsKxUcIjckuzQBj_nwUbIz7H5t-AwqtmCvaIw,3330
6
+ ckanext/search_tweaks/interfaces.py,sha256=hzk5RvBWUgLEedYGi7i-d7NxcbOWH45g3kiPQGFIEyU,859
7
+ ckanext/search_tweaks/plugin.py,sha256=L7zXLwMT38ipG-dNn-UHrxhoLfKVtKTXPaIy5MGsclI,3329
8
8
  ckanext/search_tweaks/shared.py,sha256=9aWN_OXB5-h99lecnZVoZpLY6F8hbIRNX6WUQaoOoYI,325
9
9
  ckanext/search_tweaks/advanced_search/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- ckanext/search_tweaks/advanced_search/plugin.py,sha256=yYjC-ow-fFfvUOGJfsl3OpkifdrcqA_kWI9j-9lyVhI,3242
11
- ckanext/search_tweaks/advanced_search/assets/advanced-search.css,sha256=KlBYOihUJepiu2iiGcRjIWZltogEqI8iGbO-28Wgnqw,584
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
12
  ckanext/search_tweaks/advanced_search/assets/advanced-search.js,sha256=rkgprbv9fUnWoxgISXmoxHkSC4Z9OLXgZoOIICpn9X8,2328
13
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=QlKCxEUDGP1g4oZEOKAGSuopjrJsbcgK2cs28k3X4Vc,4266
14
+ ckanext/search_tweaks/advanced_search/templates/advanced_search/search_form.html,sha256=c4PNY-HLcoLUrXVoOs3qsdEhaT7hsB4JzVUIp7ggee0,4387
15
15
  ckanext/search_tweaks/field_relevance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- ckanext/search_tweaks/field_relevance/plugin.py,sha256=f5VQcu5PfBncXM6WVLsMDze9fQe20LmNvot51mui3Jg,1338
17
- ckanext/search_tweaks/field_relevance/views.py,sha256=yAkoZrxtEKiSRMYmXHeq_bS3nGi6QtiC6zEOSu0kn5g,3336
16
+ ckanext/search_tweaks/field_relevance/plugin.py,sha256=XlKLsttiijUTVicNPdOqtNU7x9Pt_Ax5ArKxuQWAWCs,1317
17
+ ckanext/search_tweaks/field_relevance/views.py,sha256=GGE29mrdT42CufEzdEgX2HMxi77VeKpXrGmWgWFDBbY,3444
18
18
  ckanext/search_tweaks/field_relevance/assets/search-tweaks-reflect-range-in-label.js,sha256=WFAzPBvzf6SWaEAQJTxiEGhZm-65o676MN6KttCpvbo,490
19
19
  ckanext/search_tweaks/field_relevance/assets/webassets.yml,sha256=PGr_EC4jOTABCRc3JCIAqYCzCMNgGG1KYE6Ua0S0vfk,184
20
20
  ckanext/search_tweaks/field_relevance/templates/search_tweaks/field_relevance/promote.html,sha256=yMoVwcpiSl7XM-EaoznDe5MiRY3G1zcBywAI1IZhKj4,1144
@@ -22,33 +22,37 @@ ckanext/search_tweaks/query_popularity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JC
22
22
  ckanext/search_tweaks/query_popularity/config.py,sha256=O-YptWOeDQ6tyVLZ10D3dVs5tGhjOoOtFY3Xw_InmjA,858
23
23
  ckanext/search_tweaks/query_popularity/config_declaration.yaml,sha256=asztZ5jFcfOQoS0Wq-pC41scC3w2ahNEP2AhIMMO2PM,866
24
24
  ckanext/search_tweaks/query_popularity/plugin.py,sha256=ih9c7CrI-A1ilfe9I1Hb_3BdMOnzNsTyMfJA7c0Qs8A,1391
25
- ckanext/search_tweaks/query_popularity/score.py,sha256=JfOiR7yj22euNrIX3T_VYjzB7ilGpDmr4hmXFHfsSAc,1052
25
+ ckanext/search_tweaks/query_popularity/score.py,sha256=OEwO8BREcn56lmtvuv5kzHnDJ1ziaX9Wz_iuWGYs5aM,1079
26
26
  ckanext/search_tweaks/query_popularity/logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  ckanext/search_tweaks/query_popularity/logic/action.py,sha256=uG6IdAX2b8YztmcxiAho3A6-S41IPrRhvyV36CAM95g,1422
28
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=rgjmRyGb7zlBOLZo284XcH9F6VepmIv5yvoxTGxLByA,301
30
- ckanext/search_tweaks/query_relevance/__init__.py,sha256=mGpZuwY8UwPMuxjNLhGVYoaXPfLx5UPMixpldIjZuSY,1467
31
- ckanext/search_tweaks/query_relevance/cli.py,sha256=34bgBphi28vOu08H3TBrm7ssKj9_6gXiQU1SNzAs7bM,3083
32
- ckanext/search_tweaks/query_relevance/plugin.py,sha256=49lJXKeahwyFAMEh063YGF7SGNBcqpcojNA2TUSlkQ8,2219
33
- ckanext/search_tweaks/query_relevance/score.py,sha256=hfrfgNP5OUf7YBBDuFFBZb66ixpiAlnM-KAXzUVexXc,1811
34
- ckanext/search_tweaks/query_relevance/storage.py,sha256=7SP1arTjTvbHrWDZhzu9E0pWxk4ygz3NcpDk7P4YODk,4852
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
35
38
  ckanext/search_tweaks/spellcheck/__init__.py,sha256=Af3LHk9L82QtAh4q7C3srzCwJiF6WCtxe4CFTPKhFMQ,1401
36
39
  ckanext/search_tweaks/spellcheck/cli.py,sha256=X1HAXhElqJ6Hrc30USxXG50F-1RS0uvxP2tr3S6jnK0,250
37
- ckanext/search_tweaks/spellcheck/helpers.py,sha256=khlpo5acwxUZ4lDNH9V3EP1BAvLf1-Z6UY_dQCPqOow,4397
40
+ ckanext/search_tweaks/spellcheck/helpers.py,sha256=K8ciOZrFYx_6PPRxvQQgUYkPil0oqTktURged_Uhk-I,4486
38
41
  ckanext/search_tweaks/spellcheck/plugin.py,sha256=lKRNAl5V9REnjTNOhC9e4AfGLAw3wm3oQTwjS8hGofY,592
39
42
  ckanext/search_tweaks/spellcheck/templates/search_tweaks/did_you_mean.html,sha256=5IAoogXrnYb8KecOLaPKQUerYCwkbEP5SQVjekeduHM,654
40
43
  ckanext/search_tweaks/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- ckanext/search_tweaks/tests/conftest.py,sha256=Moxwo1WE8Yl6su50C7bqG6IEH3t38UW4PtfHe1SiiAk,662
44
+ ckanext/search_tweaks/tests/conftest.py,sha256=76xLSBLTP2cN9-gMWdY1-5EWLt5iDHE8W3t1wCPhxaU,987
42
45
  ckanext/search_tweaks/tests/test_plugin.py,sha256=WVnGzQP5nHzIht7PJEEIFrJ92tq5XuivQ0o8UNiRXSs,4763
43
46
  ckanext/search_tweaks/tests/query_relevance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- ckanext/search_tweaks/tests/query_relevance/test_plugin.py,sha256=RBraEO6_LMvHx9ekDz_h8LgtpEJV8BkR3q-9QotRGWA,2196
47
+ ckanext/search_tweaks/tests/query_relevance/test_plugin.py,sha256=gdf_-fojz8TPSkp2Ebxe6c0gIJHI3xDuttE3bnmRkO0,2247
45
48
  ckanext/search_tweaks/tests/query_relevance/test_score.py,sha256=RwG_o8QyW3BZBx3J5Cs1UUkMHi0DGR-mWvlSlk3ibaU,1140
46
- ckanext/search_tweaks/tests/query_relevance/test_storage.py,sha256=xBHB69zHE301mHlUB2hz0RXJaqFrhRMesAz2LNYNFE0,2825
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
47
51
  ckanext/search_tweaks/tests/spellcheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- ckanext/search_tweaks/tests/spellcheck/test_plugin.py,sha256=4pocLV8uzea2ua8LUTC3IXlyYc3oKbhApODA1uWHNFU,2517
49
- ckanext_search_tweaks-0.6.3.dist-info/LICENSE,sha256=2lWcRAHjsQhqavGNnR30Ymxq3GJ9BaYL_dnfGO_-WFA,34500
50
- ckanext_search_tweaks-0.6.3.dist-info/METADATA,sha256=7u9irDZzibOQ5AJmjYFiLBdXz-1ecdR--DLPMaVn6Xk,12247
51
- ckanext_search_tweaks-0.6.3.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
52
- ckanext_search_tweaks-0.6.3.dist-info/entry_points.txt,sha256=0hvD0BILJCAPZBOTH28bAMN8XCbPrltTZ6Q8-mUZGyE,615
53
- ckanext_search_tweaks-0.6.3.dist-info/top_level.txt,sha256=5yjNwq-s42weaiMMUuA5lZ45g99ANsfcRBCvac1JMS4,8
54
- ckanext_search_tweaks-0.6.3.dist-info/RECORD,,
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,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.7.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5