No project description provided
Project description
ckanext-search-tweaks
Set of tools providing control over search results, sorting, etc.
Requirements
Compatibility with core CKAN versions:
CKAN version | Compatible? |
---|---|
2.8 and earlier | no |
2.9 | yes |
Installation
To install ckanext-search-tweaks:
-
Activate your CKAN virtual environment, for example:
. /usr/lib/ckan/default/bin/activate
-
Install it on the virtualenv
pip install ckanext-search-tweaks
-
Add
search_tweaks
to theckan.plugins
setting in your CKAN config file (by default the config file is located at/etc/ckan/default/ckan.ini
). -
Restart CKAN.
Usage
This extensions consists of multiple plugins. search_tweaks
is the main
(major) one, that must be enabled all the time. And depending on the set of
secondary (minor) plugins, extra features and config options may be
available. Bellow are listed all the plugins with their side effects.
Plugin | Functionality |
---|---|
search_tweaks | Allow all the other plugins to be enabled |
search_tweaks_query_relevance | Promote datasets that were visited most frequently for the current search query |
search_tweaks_field_relevance | Promote dataset depending on value of it's field |
search_tweaks_spellcheck | Provides "Did you mean?" feature |
search_tweaks
Provides base functionality and essential pieces of logic used by all the other plugins. Must be enabled as long as at least one other plugin from this extension is enabled.
-
Switches search to
edismax
query parser if none was specified -
Enables
ckanext.search_tweaks.iterfaces.ISearchTweaks
interface with the following methods:def get_search_boost_fn(self, search_params: dict[str, Any]) -> Optional[str]: """Returns optional boost function that will be applied to the search query. """ return None def get_extra_qf(self, search_params: dict[str, Any]) -> Optional[str]: """Return an additional fragment of the Solr's qf. This fragment will be appended to the current qf """ return None
CLI
ckan search-tweaks -
Root of all the extension specific commands.
Every command from minor plugins is registered under this section.
Config settings
# Rewrite the default value of the qf parameter sent to Solr
# (optional, default: value of ckan.lib.search.query.QUERY_FIELDS).
ckanext.search_tweaks.common.qf = title^5 text
search_tweaks_query_relevance
Config settings
# Which backend to use in order to collect information about dataset
# relevance for the particular search query. Possible values are:
# "redis-permanent", "redis-daily"
# (optional, default: redis-daily).
ckanext.search_tweaks.query_relevance.backend = redis-permanent
# How long(in days) information about dataset visits will be stored in order to
# update relevance of dataset in search query.
# (optional, default: 90).
ckanext.search_tweaks.query_relevance.daily.age = 90
# Solr boost function with $field placeholder that will be replaced by
# the correspoinding field name
# (optional, default: "scale(def($field,0),0,2)").
ckanext.search_tweaks.query_relevance.boost_function = recip($field,1,1000,1000)
# Prefix of the numeric field defined in Solr schema. This field will hold
# dataset's relevance for the given query.
# (optional, default: query_relevance_).
ckanext.search_tweaks.query_relevance.field_prefix = custom_score_
search_tweaks_field_relevance
Config settings
# Solr boost function for static numeric field
# (optional, default: None).
ckanext.search_tweaks.field_relevance.boost_function = pow(promoted_level,2)
search_tweaks_spellcheck
Exposes search suggestions from the Solr's spellcheck component to CKAN templates. This plugin doesn't do much and mainly relies on the Solr's built-in functionality. Thus you have to make a lot of changes inside Solr in order to use it:
-
Configure spellcheck component. Search for
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
section and add the following item under it:<lst name="spellchecker"> <str name="name">did_you_mean</str> <str name="field">did_you_mean</str> <str name="buildOnCommit">true</str> </lst>
-
Add spellcheck component to the search handler (
<requestHandler name="/select" class="solr.SearchHandler">
):<arr name="last-components"> <str>spellcheck</str> </arr>
-
Define spellcheck field in the schema. If you want to use an existing field(
text
for example), change<str name="field">did_you_mean</str>
value to the name of the selected field instead.<field name="did_you_mean" type="textgen" indexed="true" multiValued="true" />
-
Note: skip if you've decided to use an existing field in the previous step.
Copy meaningfull values into this field:<copyField source="title" dest="did_you_mean"/> <copyField source="notes" dest="did_you_mean"/> <copyField source="res_name" dest="did_you_mean"/> <copyField source="res_description" dest="did_you_mean"/> <copyField source="extras_*" dest="did_you_mean"/>
After that you have to restart Solr service and rebuild search index:
ckan search-index rebuild
Now you can use spellcheck_did_you_mean
helper that returns better search
query when available instead of the current one. Consider including
search_tweaks/did_you_mean.html
fragment under search form.
Developer installation
To install ckanext-search-tweaks for development, activate your CKAN virtualenv and do:
git clone https://github.com/DataShades/ckanext-search-tweaks.git
cd ckanext-search-tweaks
python setup.py develop
pip install -r dev-requirements.txt
Tests
Apart from the default configuration for CKAN testing, you have to create
ckan_search_tweaks
Solr's core, replace its schema with
ckanext/search_tweaks/tests/schema.xml
and make changes to solrconfig.xml
that are required by search_tweaks_spellcheck
.
To run the tests, do:
pytest --ckan-ini=test.ini ckanext/search_tweaks/tests
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ckanext-search-tweaks-0.1.3.tar.gz
.
File metadata
- Download URL: ckanext-search-tweaks-0.1.3.tar.gz
- Upload date:
- Size: 29.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c011fb94bb85a6af24c0a4c16488e9dfd6a324cbb727042015d879d31ad23897 |
|
MD5 | f4d81ce39436b5a661f0004d37aef39e |
|
BLAKE2b-256 | e6c079bb54b05fcaef3c2069fd3452575d4d3d823339152a404416947597ca60 |
File details
Details for the file ckanext_search_tweaks-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: ckanext_search_tweaks-0.1.3-py3-none-any.whl
- Upload date:
- Size: 36.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a06824957265bfe2f1602d65738a7016095f287c7648ef0047ee99b1637d6d5f |
|
MD5 | 412316774f936ba1869ab6f1fa366843 |
|
BLAKE2b-256 | d28dd1cb1cc21a0a4264ddab364d60643bacd546d781f8ae2cf9a7a33042fa70 |