Unsupported Release
This documentation relates to DSpace 1.8.x, an old, unsupported version. Looking for another version? See all documentation.
As of January 2015, DSpace 1.8.x is no longer supported. We recommend upgrading to a more recent version of DSpace. See DSpace Software Support Policy.
DSpace Discovery
What is DSpace Discovery
The Discovery Module for the XML user interface enables faceted searching & browsing for your repository.
Although these techniques are new in DSpace, they might feel familiar from other platforms like Aquabroser or Amazon, where facets help you to select the right product according to facets like price and brand. DSpace Discovery offers very powerful browse and search configurations that were only possible with code customization in the past.
Watch the DSpace Discovery introduction video
What is a Sidebar Facet
From the user perspective, faceted search (also called faceted navigation, guided navigation, or parametric search) breaks up search results into multiple categories, typically showing counts for each, and allows the user to "drill down" or further restrict their search results based on those facets.
When you have successfully enabled Discovery in your DSpace, you will notice that the different enabled facets are visualized in a "Discover" section in your sidebar, by default, right below the Browse options.
In this example, there are 3 Sidebar Facets, Author, Subject and Date Issued. It's important to know that multiple metadata fields can be included in one facet. For example, the Author facet above includes values from both dc.contributor.author as well as dc.creator.
Another important property of Sidebar Facets is that their contents are automatically updated to the context of the page. On collection homepages or community homepages it will include information about the items included in that particular collection or community.
What is a Search Filter
In a standard search operation, a user specifies his complete query prior to launching the operation. If the results are not satisfactory, the user starts over again with a (slightly) altered query.
In a faceted search, a user can modify the list of displayed search results by specifying additional "filters" that will be applied on the list of search results. In DSpace, a filter is a contain condition applied to specific facets. In the example below, a user started with the search term "approach", which yielded 15 results. By applying the filter "economics" on the facet "Subject". After applying this filter, only 6 results remain.
Another example would be the standard search operation [wetland + "dc.author=Mitsch, William J" + dc.subject="water quality" ]. With filtered search, a user can start by searching for [wetland ], and then filter the results by the other attributes, author and subject.
Discovery Features
- Configurable sidebar browse facets that can display contents from any metadata field
- Dynamically generated timespans for dates
- Customizable recent submissions display on the repository homepage, collection and community pages
- Auto-complete on search terms
DSpace 1.8 Improvements
- Configuration moved from dspace.cfg into config/modules/discovery.cfg and config/spring/discovery/spring-dspace-addon-discovery-configuration-services.xml
- Individual communities and collections can have their own Discovery configuration.
Enabling Discovery
As with any upgrade procedure, it is highly recommend that you backup your existing data thoroughly. Although upgrades in versions of Solr/Lucene do tend to be forwards compatible for the data stored in the Lucene index, it is always a best practice to backup your dspace.dir/solr/statistics cores to assure no data is lost.
- Enable the Discovery Aspects in the XMLUI by changing the following settings in config/xmlui.xconf
- Comment out: SearchArtifacts
- Uncomment: Discovery
<xmlui> <aspects> <aspect name="Artifact Browser" path="resource://aspects/ArtifactBrowser/" /> <aspect name="Browsing Artifacts" path="resource://aspects/BrowseArtifacts/" /> <!--<aspect name="Searching Artifacts" path="resource://aspects/SearchArtifacts/" />--> <aspect name="Administration" path="resource://aspects/Administrative/" /> <aspect name="E-Person" path="resource://aspects/EPerson/" /> <aspect name="Submission and Workflow" path="resource://aspects/Submission/" /> <aspect name="Statistics" path="resource://aspects/Statistics/" /> <!-- To enable Discovery, uncomment this Aspect that will enable it within your existing XMLUI Also make sure to comment the SearchArtifacts aspect as leaving it on together with discovery will cause UI overlap issues--> <aspect name="Discovery" path="resource://aspects/Discovery/" /> <!-- This aspect tests the various possible DRI features, it helps a theme developer create themes --> <!-- <aspect name="XML Tests" path="resource://aspects/XMLTest/"/> --> </aspects>
- Enable the Discovery Indexing Consumer that will update Discovery Indexes on changes to content in XMLUI, JSPUI, SWORD, and LNI in config/dspace.cfg
- Add discovery to the list of event.dispatcher.default.consumers
# default synchronous dispatcher (same behavior as traditional DSpace) event.dispatcher.default.class = org.dspace.event.BasicDispatcher #event.dispatcher.default.consumers = search, browse, eperson, harvester event.dispatcher.default.consumers = search, browse, discovery, eperson, harvester
- Change recent.submissions.count to zero
#Put the recent submissions count to 0 so that discovery can use it's recent submissions, # not doing this when discovery is enabled will cause UI overlap issues #How many recent submissions should be displayed at any one time #recent.submissions.count = 5 recent.submissions.count = 0
- Add discovery to the list of event.dispatcher.default.consumers
- Check that the port is correct for solr.search.server in config/modules/discovery.cfg
- If all of your traffic runs over port 80, then you need to remove the port from the URL
##### Search Indexing ##### solr.search.server = http://localhost/solr/search
- If all of your traffic runs over port 80, then you need to remove the port from the URL
- From the command line, navigate to the dspace directory and run the command below to index the content of your DSpace instance into Discovery.
./bin/dspace update-discovery-index
NOTE: This step may take some time if you have a large number of items in your repository.
Configuring Discovery
The configuration for discovery is located in 2 separate files.
- General settings: The discovery.cfg file located in the dspace.dir/config/modules directory.
- User Interface Configuration: The spring-dspace-addon-discovery-configuration-services.xml file is located in dspace.dir/config/spring directory.
Configuring general Discovery settings (config/modules/discovery.cfg)
The discovery.cfg file is located in the dspace.dir/config/modules directory and contains following properties:
Property: |
search.server |
Example Value: |
search.server=http://localhost:8080/solr/search |
Informational Note: |
Discovery relies on a SOLR index for storage and retrieval of its information. This parameter determines the location of the SOLR index. |
Property: |
search.default.sort.order |
Example Value: |
search.default.sort.order=DESC |
Informational Note: |
The default sort order for relevance when searching in discovery. This parameter can either be descending (DESC) or ascending (ASC). End-users can change this sort order from the user interface. |
Property: |
index.ignore |
Example Value: |
index.ignore=dc.description.provenance,dc.language |
Informational Note: |
By default, Discovery will include all of the DSpace metadata in its search index. In cases where specific metadata is confidential, repository managers can include those fields by adding them to this comma separated list. |
Configuring the Discovery user interface (config/spring/spring-dspace-addon-discovery-configuration-services.xml)
The spring-dspace-addon-discovery-configuration-services.xml file is located in the dspace.dir/config/spring directory.
Structure Summary
Because this file is in XML format, you should be familiar with XML before editing this file. The configurations are organized together in beans, depending on the purpose these properties are used for.
This purpose can be derived from the class of the beans. Here's a short summaries of classes you will encounter throughout the file and what the corresponding properties in the bean are used for.
Download the configuration file and review it together with the following parameters
Class: |
DiscoveryConfigurationService |
Purpose: |
Defines the mapping between separate Discovery configurations and individual collections/communities |
Default: |
All communities, collections and the homepage (key=default) are mapped to defaultConfiguration |
Class: |
DiscoveryConfiguration |
Purpose: |
Groups configurations for sidebar facets, search filters, search sort options and recent submissions |
Default: |
There is one configuration by default called defaultConfiguration |
Class: |
DiscoverySearchFilter |
Purpose: |
Defines that specific metadata fields should be enabled as a search filter |
Default: |
dc.title, dc.contributor.author, dc.creator, dc.subject.* and dc.date.issued are defined as search filters |
Class: |
DiscoverySidebarFacetConfiguration |
Purpose: |
Defines which metadata fields should be offered as a contextual sidebar browse option |
Default: |
dc.contributor.author, dc.creator, dc.subject.* and dc.date.issued |
Class: |
DiscoverySortConfiguration |
Purpose: |
Further specifies the sort options to which a DiscoveryConfiguration refers |
Default: |
dc.title and dc.date.issued are defined as alternatives for sorting, other than Relevance (hard coded) |
Default settings
In addition to the summarized descriptions of the default values, following details help you to better understand these defaults. If you haven't yet, download the configuration file and review it together with the following details|pages/viewpageattachments.action?pageId=25470754&highlight=spring-dspace-addon-discovery-configuration-services.xml#Discovery-attachment-spring-dspace-addon-discovery-configuration-services.xml\.
The file contains one default configuration that defines following sidebar facets, search filters, sort fields and recent submissions display:
- Sidebar facets
- sidebarFacetAuthor: groups the metadata fields dc.contributor.author & dc.creator with a facet limit of 10, sorted by occurrence count
- sidebarFacetSubject: groups all subject metadata fields (dc.subject.*) with a facet limit of 10, sorted by occurrence count
- sidebarFacetDateIssued: contains the dc.date.issued metadata field, which is identified with the type "date" and sorted by specific date values
- Search filters
- searchFilterTitle: contains the dc.title metadata field and has a tokenized autocomplete
- searchFilterAuthor: contains the dc.contributor.author & dc.creator metadata fields and has a non tokenized autocomplete configured
- searchFilterSubject: contains the dc.subject.* metadata fields and has a non tokenized autocomplete configured
- searchFilterIssued: contains the dc.date.issued metadata field with the type "date" and has a tokenized autocomplete
- Sort fields
- sortTitle: contains the dc.title metadata field
- sortDateIssued: contains the dc.date.issued metadata field, this sort has the type date configured.
- defaultFilterQueries
- The default configuration contains no defaultFilterQueries
- The default filter queries are disabled by default but there is an example in the default configuration in comments which allows discovery to only return items (as opposed to also communities/collections).
- Recent Submissions
- The recent submissions are sorted by dc.date. accessioned which is a date and a maximum number of 5 recent submissions are displayed.
Many of the properties contain lists which use references to point to the configuration elements. This way a certain configuration type can be used in multiple discovery configurations so there is no need to duplicate these.
Advanced SOLR Configuration
Discovery is built as an application layer on top of the Open Source Enterprise Search Server SOLR. Therefor, SOLR configuration can be applied to the SOLR cores that are shipped with DSpace.
The DSpace SOLR instance itself now runs two cores. One for collection DSpace Solr based "statistics", the other for Discovery Solr based "search".
solr ├── search │ ├── conf │ │ ├── admin-extra.html │ │ ├── elevate.xml │ │ ├── protwords.txt │ │ ├── schema.xml │ │ ├── scripts.conf │ │ ├── solrconfig.xml │ │ ├── spellings.txt │ │ ├── stopwords.txt │ │ ├── synonyms.txt │ │ └── xslt │ │ ├── DRI.xsl │ │ ├── example.xsl │ │ ├── example_atom.xsl │ │ ├── example_rss.xsl │ │ └── luke.xsl │ └── conf2 ├── solr.xml └── statistics └── conf ├── admin-extra.html ├── elevate.xml ├── protwords.txt ├── schema.xml ├── scripts.conf ├── solrconfig.xml ├── spellings.txt ├── stopwords.txt ├── synonyms.txt └── xslt ├── example.xsl ├── example_atom.xsl ├── example_rss.xsl └── luke.xsl
Discovery 1.7 Tips & Tricks Web Seminar
This webinar has been broadcasted on June 1st, 2011 and its contents relate to DSpace 1.7
http://www.ustream.tv/recorded/15095992
Topics in this webinar include:
- Hiding metadata from discovery
- Configuring different fields in the auto-complete drop-down
- Discovery Browse: Creating new facets
- Special case: Creating a new date value facet