Discovery module back end rewrite to support discovery without solr.
--------------------------------------------------------------------
Key: DSCR-22
URL: https://jira.duraspace.org/browse/DSCR-22
Project: DSpace Discovery Module
Issue Type: Improvement
Reporter: Kevin Van de Velde
Priority: Major
Attachments: Discovery_implementation_independent_of_solr v0.1.patch
The goal of this task was twofold.
1) Ensure that discovery doesn't have to use solr as a backend, in other words
ensure that user can plug in their own backend implementation.
2) Rewrite some of the code to make it more logical (example: the sidebar
filters for a community page where rendered because the
CommunityRecentSubmissionsTransformer extended the AbstractsFiltersTransformer
=> logically these are 2 completely different things).
This task focuses completely on these 2 point. Please bear mind that almost
nothing in the UI has been changed. While programming this task I also had a
minor feature request which I implemented namely the following:
The autocomplete filters can be configured to not split words on a space, this
is particularly useful for authors. The changes are briefly described below.
a) A new discovery sub module has been created named "dspace-discovery-solr"
this module is the only module that contains any solr dependencies and contains
the old " SolrServiceImpl" class and the
spring-dspace-addon-discovery-services.xml spring file. This module is used by
default and ensures that a discovery out of the box will still work. None of
the other discovery modules have dependencies on this module so it can be
replaced very easily.
b) The "dspace-discovery-provider" module has lost the all the solr
dependencies as explained and the "SearchService" interface has undergone some
changes, the search methods don't require a solrQuery anymore and do not return
a solrResult.
Instead 2 new objects have been created
* DiscoverQuery: will hold all query information
* DiscoverResult: will contain the resulting dspace objects and/or the facets
By doing things this way any programmer can implement the search service and
write their own backend.
c) All the user interface classes have been rewritten to support these new
objects.
d) One logical change was also made namely the following:
The abstractFilters class has been transformed into the
"SidebarFacetsTransformer". The facets will still appear on the same places,
but unlike earlier where the only reason the community had sidebar facets was
that the "CommunityRecentSubmissions" class extended the filters class the
SidebarFacetsTransformer is now called on each community page. I did this
because it just makes more sense that way.
e) I also added an extra method to indexing implementation of solr, named "
indexItemFieldCustom" should it ever be required to adjust some simple indexing
task the entire " SolrServiceImpl" does not need to be overwritten. One simply
extends the class and implement that method (a boolean is returned which can
prevent further indexing of the metadata field).
There is one thing that remains unfinished and that is the related items, I'm
still thinking on the best way to implement that with the
DiscoveryQuery/DiscoveryResult objects, if anybody has some suggestion I'm
always willing to listen.
Please bear in mind when testing with this patch that solr schema has been
altered and a complete forced re-index of discovery is required.
Once this patch (after some changes & small improvements) gets committed I will
start work to ensure that discovery will use the configurationService instead
of its own configuration methods.
Ps: this patch also includes a bugfix for the following JIRA task:
https://jira.duraspace.org/browse/DS-868
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.duraspace.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Dspace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-devel