Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

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 "health", which yielded 500 results. After applying the filter "public" on the facet "Subject", only 227 results remain. Each time a user selects a sidebar facet it will be added as a filter. Active filters can be altered or removed in the 'filters' section of the search interface.

Wiki MarkupAnother example: Using the standard search, a user would search for something like \ [*wetland + "dc.author=Mitsch, William J" + dc.subject="water quality"* \ ]. With filtered search, they can start by searching for \ [*wetland* \ ], and then filter the results by the other attributes, author and subject.

Discovery Features

  • Sidebar browse facets that can be configured to use contents from any metadata field
    • Dynamically generated timespans for dates
  • Customizable recent submissions view on the repository homepage, collection and community pages
  • Hit highlighting & search snippets

...

  • Hit highlighting and search snippets support
  • Hierarchical facets sidebar facets
  • Improved & more intuitive user interface
  • Access rights based results
  • More like this

Enabling Discovery

Wiki MarkupAs 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-install-dir\]/solr/statistics}} cores to assure no data is lost.

  1. Enable the Discovery Aspects in the XMLUI by changing the following settings in config/xmlui.xconf
    1. Comment out: SearchArtifacts
    2. Uncomment: Discovery
      Code Block
      xml
      xml
      <xmlui>
          <aspects>
              <!--
                  @deprecated: the Artifact Browser has been devided into ViewArtifacts,
                  BrowseArtifacts, SearchArtifacts
                  <aspect name="Artifact Browser" path="resource://aspects/ArtifactBrowser/" />
              -->
              <aspect name="Displaying Artifacts" path="resource://aspects/ViewArtifacts/" />
              <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>
      
  2. Enable the Discovery Indexing Consumer that will update Discovery Indexes on changes to content in XMLUI, JSPUI, SWORD, and LNI in config/dspace.cfg
    1. Add discovery to the list of event.dispatcher.default.consumers
      Code Block
      # 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
      
    2. Change recent.submissions.count to zero
      Code Block
      #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
      
  3. Check that the port is correct for solr.search.server in config/modules/discovery.cfg
    1. If all of your traffic runs over port 80, then you need to remove the port from the URL
      Code Block
      ##### Search Indexing #####
      solr.search.server = http://localhost/solr/search
      
  4. From the command line, navigate to the dspace directory and run the command below to index the content of your DSpace instance into Discovery.
    Code Block
    ./bin/dspace update-discovery-index
    
    Panel

    NOTE: This step may take some time if you have a large number of items in your repository.

  5. Verify that you can see the Sidebar Facets on your DSpace homepage. Note that these are only visible when you have items in your repository.

...

The configuration for discovery is located in 2 separate files.

...

  • General settings: The {{discovery.cfg}} file located in the {{\[dspace-install-dir\]/config/modules directory}}.
  • Wiki MarkupUser Interface Configuration: The {{spring-dspace-addon-discovery-configuration-services.xml}} file is located in {{\[dspace-install-dir\]/config/spring/discovery/}} directory.

General Discovery settings (config/modules/discovery.cfg)

Wiki MarkupThe {{discovery.cfg}} file is located in the {{\[dspace-install-dir\]/config/modules}} directory and contains following properties:

Property:

search.server<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="62043499-9d94-4812-b0d0-85f89abe588a"><ac:plain-text-body><![CDATA[

Example Value:

search.server=[http://localhost:8080/solr/search]

]]></ac:plain-text-body></ac:structured-macro>

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:

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.

Modifying 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-install-dir\]/config/spring}} directory.

Structure Summary

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 summary of classes you will encounter throughout the file and what the corresponding properties in the bean are used for.

...

The org.dspace.discovery.DiscoveryQuery object has a setter & getter for the hit highlighting configuration configured in the discovery configuration. If this configuration is given the resolveToSolrQuery method located in the org.dspace.discovery.SolrServiceImpl class will use the standard solr highlighting feature (http://wiki.apache.org/solr/HighlightingParameters). The org.dspace.discovery.DiscoverResult class has a method to set the highlighted fields for each object & field.

Wiki MarkupThe rendering of search results is no longer handled by the mets format but uses a special type of list named "TYPE_DSO_LIST". Each metadata field (& fulltext if configured) is added in the DRI and IF the field contains hit higlighting the java code will split up the string & add _DRI highlights_&nbsp;to the highlights to the list. The xsl for the themes also contains special rendering xsl for the DRI, for Mirage the changes have been located in the _discovery.xsl_ file. For themes using the old structural.xsl look for the template matching "_dri:list\[@type='dsolist'\]_".

More like this configuration

...

Access item based results

Wiki MarkupThe items returned by discovery are all the items the user logged in has access to. So the results may differ if you are logged in. This feature can be switched off it isn't requested by going to the&nbsp;\to the [dspace.dir\]/config/spring/discovery/spring-dspace-addon-discovery-solr-plugin-services.xml file & commenting out the bean & the alias shown below.

Code Block
languagehtml/xml
<bean class="org.dspace.discovery.SolrServiceResourceRestrictionPlugin" id="solrServiceResourceIndexPlugin"/>

<alias name="solrServiceResourceIndexPlugin" alias="org.dspace.discovery.SolrServiceResourceRestrictionPlugin"/>

...

Discovery SOLR Index Maintenance

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="b55541b1-43f1-43e9-8d07-b04c41a9f43c"><ac:plain-text-body><![CDATA[

Command used:

[dspace]/bin/dspace update-discovery-index [-cbhf[r <item handle>]]]]></ac:plain-text-body></ac:structured-macro>

Java class:

org.dspace.discovery.IndexClient

Arguments (short and long forms):

Description

 

called without any options, will update/clean an existing index

-b

(re)build index, wiping out current one if it exists

-c

clean existing index removing any documents that no longer exist in the db

-f

if updating existing index, force each handle to be reindexed even if uptodate

-h

print this help message

-o

optimize search core

-r <item handle>

remove an Item, Collection or Community from index based on its handle

...

It is strongly recommended to run maintenance on the Discovery SOLR index daily (from crontab or your system's scheduler), to prevent your servlet container from running out of memory:

Wiki Markup{{\[dspace\]/bin/dspace update-discovery-index \ -o}}

Advanced SOLR Configuration

...