Anura offers faceted search since version 2.6. In order for this to work, you'll need to add the [anuraSolr](https://mediahub.brix.ch/main/opennodeview.do?tab=transfertab&nodeId=6485)-{[version](/celum_extensions#naming-scheme)}.jar to `{home}/appserver/lib` and configure your SOLR server accordingly. Anura requires an extra index per referenced CELUM user, as permissions are not reflected in the search index, so we have to maintain a separate index per user that reflects what that user can see. [MINITOC] ### Compatibility Matrix | AnuraSolr | Anura | CELUM 6 | CELUM 5.13.x | CELUM 5.12.x | | --------------- | --------------- | ------- | --------------- | ------------ | | 1.0 - 1.4 | 2.5 - 2.6.13 | | 5.13.0 - 5.13.3 | 5.12.3 (+) | | 1.0 - 1.4 | 2.6.14 - 2.7.6 | | 5.13.3 | | | 1.5 | 2.7.9 and above | | 5.13.4 (+) | | | 1.6 | 2.8.0 and above | 6.1 (+) | - | - | | 1.6.1 and above | 2.8.1 and above | 6.4 (+) | - | - | | 1.7 and above | 2.9 | 6.8 (+) | - | - | ### Installation > > > > If you are in their "pipeline hosting", follow [this guide](Pipeline-Hosting.pdf) instead! 1. go to *{home}*/searchserver/solrhome 2. download the [solr core template](./assetsAnura1.zip) and extract it 3. rename it assetsAnura*{userId}* (e.g. *assetsAnura42* if your anura-user has the ID 42 - check [anura.*$i*.userId](#anura-1-userid)). The file assetsAnura{userId}/core.properties must be also adjusted as follows: `name = assetsAnura{userId}` > > > Make sure the directory is writable by the tomcat user, otherwise the indexing will fail later on 4. **CELUM 5.13.4 onwards or whenever the data directory is not inside the solrhome directory**: Change the `dataDir` property in the copied *assetsAnura{userId}/conf/solrconfig.xml* to `${solr.assetsAnura{userId}.data.dir:}` (e.g. `${solr.assetsAnura42.data.dir:}`) > > > If you have customized the data directory of your asset core, e.g. by specifying *-Dsolr.assets.data.dir=...*, you'll need to change the _dataDir_ property in the copied assetsAnura*{userId}*/conf/solrconfig.xml to something else, e.g. `${solr.assetsAnura42.data.dir:}` so you could pass *-Dsolr.assetsAnura42.data.dir=...* - otherwise it tries to write to the existing asset core data directory and fails. 5. Restart the search server. In its web-UI, you should now see the new core in the "Core Selector" dropdown. ![solr-core](solr-core.png) 6. Configure the [facetProvider](#anura-1-facetprovider)-property (e.g. `anura.1.facetProvider=anuraSolrSearchRequestHandler`) and restart the app server. 7. BREAKING CHANGE as of 6.17: You need to whitelist the SOLR URL: `sdk.property.whitelist=search.serverUrl` 8. In CELUM, go to *Administration > System Tasks > Anura* and start the *Recreate facet search index* task. Because there are no permission events in the SDK, you may also need to do that when you change the anura user's role(-assignments). 9. You can now use `facets: true` in [anuraSearch](/anura/frontend/navigation#search) ### Properties *To be configured in {home}/appserver/conf/custom.properties* ##### anuraSolr.solrUrl > type: String, **required: yes**, default: ${search.serverUrl} The URL of the SOLR server. Defaults to the one CELUM is using. ##### anuraSolr.leadingWildcardSearch > type: boolean, required: yes, default: ${search.enableLeadingWildcardSearch} Whether to use leading wildcard search. This **must** match the settings you use in CELUM, so the default is `${search.enableLeadingWildcardSearch}` ##### anuraSolr.useSDKForFulltextSearch > type: boolean, required: no, default: true Set this property to true, to use the SDK for fulltext search. ##### anuraSolr.facetLimit > type: boolean, required: no, default: -1 Set this property to another value 'x' to get only top 'x' facet result per faceted field. Not recommendet. ##### anuraSolr.translateFilterToSolr > type: boolean, required: no, default: false, status: beta When using [globalFilter](/anura/backend#anura-1-global-filter), translate the filter into a SOLR native query instead of using the SDK. This is a lot faster, but not every query is supported yet. Known supported queries: and, or, asset type, checkbox, dropdown, node assignments. Contact us if you need more ^^ ##### anuraSolr.cronExpression > type: String , required: no, default: - A cron expression (quartz) to run the recreation task automatically, e.g. `0 0 0 * * ?` for midnight. ##### anuraSolr.cronExpressionCleanUpEntries > type: String, required: no, default: 0 0 0 * * ?, since: 1.7 A cron expression (quartz) to run the cleanup task, i.e. remove expired assets from the index. ##### anuraSolr.threadPoolSize > type: int , required: no, default: 10 Size of the threadpool to run the re-indexing with. ##### anuraSolr.reindexPageSize > type: int , required: no, default: 200 The fetch-size used then re-indexing. ### Troubleshooting ##### No results or all options gone When you get either no results or all the faceted options get removed instantly after loading the page, check: * that the SOLR core was actually created successfully - see if it exists in the "Core Selector" on the left side of the SOLR UI. Observed mistakes include * Incorrect, missing or non-readable configuration files (check solr log) * Multiple cores using the same `dataDir` (see above) * the `dataDir` is not writable to the SOLR user * you have a current version of the conf/schema.xml and aren't missing any `docValues` (see above) * if the core (assetsAnura*123*) has any assets in it. Go to Query, set *q* to `*:*` and hit *Execute Query*. Response should return a `numFound` > 0. If not, check the *Anura: recreate facets* tasks (or the log) for error messages. * if only some fields seem to be missing in the facet response it's probably a permission issue. To see if any values are indexed for a particular field, e.g. NodeRef 360, query for `nodeBackedPathIds_360:*` and see if you get any results (depending on the field type the key will be different, e.g. `customFields__`. If the query yields no results, double-check the users permissions and re-index. ##### Textfield type-ahead suggestions are backwards In your anura core's conf/schema.xml, remove the following line: ```xml ``` ... and recreate the search index. ##### unknown field 'path' Since 6.14 a yet unknown change has been made to the schema.xml's _path_ field. Until a better fix is available, add ```xml ``` below the field "containers" in your copied schema.xml. ### Release notes ##### 1.0.0 * Initial release ##### 1.1.3 * Improved error handling ##### 1.1.9 * Improved indexing ##### 1.2 * Added nodereference and/or logic ##### 1.3 * Improved indexing performance ##### 1.4 * Extra version for older CELUM with solr 4 * Added CELUM-Filter translation ##### 1.5 * Implemented a cleanup task to remove assets from the index, that no longer exist, but have been missed to be deleted ##### 1.6 * Added support for the new filters ##### 1.7 * Bump minimal CELUM version to 6.8 * Support new text search behavior ##### 1.8 * new approach for full-text search (performance)