mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-17 23:13:10 +00:00
Merge pull request #118 from atmire/DS-1246
[DS-1246] Discovery indexer indexes collection license field.
This commit is contained in:
@@ -67,6 +67,11 @@ public class SearchUtils {
|
||||
return manager.getServiceByName(DiscoveryConfigurationService.class.getName(), DiscoveryConfigurationService.class);
|
||||
}
|
||||
|
||||
public static List<String> getIgnoredMetadataFields(int type)
|
||||
{
|
||||
return getConfigurationService().getToIgnoreMetadataFields().get(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method that retrieves a list of all the configuration objects from the given item
|
||||
* A configuration object can be returned for each parent community/collection
|
||||
|
@@ -82,7 +82,7 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
||||
public static final String STORE_SEPARATOR = "\n|||\n";
|
||||
|
||||
public static final String VARIANTS_STORE_SEPARATOR = "###";
|
||||
|
||||
|
||||
/**
|
||||
* Non-Static CommonsHttpSolrServer for processing indexing events.
|
||||
*/
|
||||
@@ -636,11 +636,12 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
||||
String rights = community.getMetadata("copyright_text");
|
||||
String title = community.getMetadata("name");
|
||||
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description", description);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description.abstract", description_abstract);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description.tableofcontents", description_table);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.rights", rights);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.title", title);
|
||||
List<String> toIgnoreMetadataFields = SearchUtils.getIgnoredMetadataFields(community.getType());
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description", description);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description.abstract", description_abstract);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description.tableofcontents", description_table);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.rights", rights);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.title", title);
|
||||
|
||||
//Do any additional indexing, depends on the plugins
|
||||
List<SolrServiceIndexPlugin> solrServiceIndexPlugins = new DSpace().getServiceManager().getServicesByType(SolrServiceIndexPlugin.class);
|
||||
@@ -688,13 +689,14 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
||||
String rights_license = collection.getMetadata("license");
|
||||
String title = collection.getMetadata("name");
|
||||
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description", description);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description.abstract", description_abstract);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description.tableofcontents", description_table);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.provenance", provenance);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.rights", rights);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.rights.license", rights_license);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.title", title);
|
||||
List<String> toIgnoreMetadataFields = SearchUtils.getIgnoredMetadataFields(collection.getType());
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description", description);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description.abstract", description_abstract);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description.tableofcontents", description_table);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.provenance", provenance);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.rights", rights);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.rights.license", rights_license);
|
||||
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.title", title);
|
||||
|
||||
|
||||
//Do any additional indexing, depends on the plugins
|
||||
@@ -715,14 +717,17 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
||||
* @param metadataField the metadata field added
|
||||
* @param value the value (can be NULL !)
|
||||
*/
|
||||
protected void addContainerMetadataField(SolrInputDocument doc, List<String> highlightedMetadataFields, String metadataField, String value)
|
||||
protected void addContainerMetadataField(SolrInputDocument doc, List<String> highlightedMetadataFields, List<String> toIgnoreMetadataFields, String metadataField, String value)
|
||||
{
|
||||
if(StringUtils.isNotBlank(value))
|
||||
if(toIgnoreMetadataFields == null || !toIgnoreMetadataFields.contains(metadataField))
|
||||
{
|
||||
doc.addField(metadataField, value);
|
||||
if(highlightedMetadataFields.contains(metadataField))
|
||||
if(StringUtils.isNotBlank(value))
|
||||
{
|
||||
doc.addField(metadataField + "_hl", value);
|
||||
doc.addField(metadataField, value);
|
||||
if(highlightedMetadataFields.contains(metadataField))
|
||||
{
|
||||
doc.addField(metadataField + "_hl", value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -822,21 +827,7 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
||||
}
|
||||
}
|
||||
|
||||
List<String> toIgnoreFields = new ArrayList<String>();
|
||||
String ignoreFieldsString = new DSpace().getConfigurationService().getProperty("discovery.index.ignore");
|
||||
if(ignoreFieldsString != null)
|
||||
{
|
||||
if(ignoreFieldsString.contains(","))
|
||||
{
|
||||
for (int i = 0; i < ignoreFieldsString.split(",").length; i++)
|
||||
{
|
||||
toIgnoreFields.add(ignoreFieldsString.split(",")[i].trim());
|
||||
}
|
||||
} else {
|
||||
toIgnoreFields.add(ignoreFieldsString);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
List<String> toProjectionFields = new ArrayList<String>();
|
||||
String projectionFieldsString = new DSpace().getConfigurationService().getProperty("discovery.index.projection");
|
||||
if(projectionFieldsString != null){
|
||||
@@ -867,8 +858,9 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
||||
field += "." + meta.qualifier;
|
||||
}
|
||||
|
||||
List<String> toIgnoreMetadataFields = SearchUtils.getIgnoredMetadataFields(item.getType());
|
||||
//We are not indexing provenance, this is useless
|
||||
if (toIgnoreFields.contains(field) || toIgnoreFields.contains(unqualifiedField + "." + Item.ANY))
|
||||
if (toIgnoreMetadataFields != null && (toIgnoreMetadataFields.contains(field) || toIgnoreMetadataFields.contains(unqualifiedField + "." + Item.ANY)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ import java.util.Map;
|
||||
public class DiscoveryConfigurationService {
|
||||
|
||||
private Map<String, DiscoveryConfiguration> map;
|
||||
private Map<Integer, List<String>> toIgnoreMetadataFields;
|
||||
|
||||
public Map<String, DiscoveryConfiguration> getMap() {
|
||||
return map;
|
||||
@@ -27,6 +28,14 @@ public class DiscoveryConfigurationService {
|
||||
this.map = map;
|
||||
}
|
||||
|
||||
public Map<Integer, List<String>> getToIgnoreMetadataFields() {
|
||||
return toIgnoreMetadataFields;
|
||||
}
|
||||
|
||||
public void setToIgnoreMetadataFields(Map<Integer, List<String>> toIgnoreMetadataFields) {
|
||||
this.toIgnoreMetadataFields = toIgnoreMetadataFields;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
DSpace dspace = new DSpace();
|
||||
System.out.println(dspace.getServiceManager().getServicesNames().size());
|
||||
|
@@ -10,9 +10,6 @@ search.server = http://localhost:8080/solr/search
|
||||
#Char used to ensure that the sidebar facets are case insensitive
|
||||
#solr.facets.split.char=\n|||\n
|
||||
|
||||
#All metadata fields that will not end up in the index, this is a comma separated list
|
||||
index.ignore=dc.description.provenance
|
||||
|
||||
# index.ignore-variants = false
|
||||
# index.ignore-authority = false
|
||||
index.projection=dc.title,dc.contributor.*,dc.date.issued
|
||||
|
@@ -9,12 +9,15 @@
|
||||
|
||||
-->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xmlns:util="http://www.springframework.org/schema/util"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||
http://www.springframework.org/schema/context
|
||||
http://www.springframework.org/schema/context/spring-context-2.5.xsd"
|
||||
http://www.springframework.org/schema/context/spring-context-3.0.xsd
|
||||
http://www.springframework.org/schema/util
|
||||
http://www.springframework.org/schema/util/spring-util-3.0.xsd"
|
||||
default-autowire-candidates="*Service,*DAO,javax.sql.DataSource">
|
||||
|
||||
<context:annotation-config /> <!-- allows us to use spring annotations in beans -->
|
||||
@@ -44,6 +47,46 @@
|
||||
<!--<entry key="123456789/7621" value-ref="defaultConfiguration"/>-->
|
||||
</map>
|
||||
</property>
|
||||
<property name="toIgnoreMetadataFields">
|
||||
<map>
|
||||
<entry>
|
||||
<key><util:constant static-field="org.dspace.core.Constants.COMMUNITY"/></key>
|
||||
<list>
|
||||
<!--Introduction text-->
|
||||
<!--<value>dc.description</value>-->
|
||||
<!--Short description-->
|
||||
<!--<value>dc.description.abstract</value>-->
|
||||
<!--News-->
|
||||
<!--<value>dc.description.tableofcontents</value>-->
|
||||
<!--Copyright text-->
|
||||
<value>dc.rights</value>
|
||||
<!--Community name-->
|
||||
<!--<value>dc.title</value>-->
|
||||
</list>
|
||||
</entry>
|
||||
<entry>
|
||||
<key><util:constant static-field="org.dspace.core.Constants.COLLECTION"/></key>
|
||||
<list>
|
||||
<!--Introduction text-->
|
||||
<!--<value>dc.description</value>-->
|
||||
<!--Short description-->
|
||||
<!--<value>dc.description.abstract</value>-->
|
||||
<!--News-->
|
||||
<!--<value>dc.description.tableofcontents</value>-->
|
||||
<!--Copyright text-->
|
||||
<value>dc.rights</value>
|
||||
<!--Collection name-->
|
||||
<!--<value>dc.title</value>-->
|
||||
</list>
|
||||
</entry>
|
||||
<entry>
|
||||
<key><util:constant static-field="org.dspace.core.Constants.ITEM"/></key>
|
||||
<list>
|
||||
<value>dc.description.provenance</value>
|
||||
</list>
|
||||
</entry>
|
||||
</map>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!--The default configuration settings for discovery-->
|
||||
|
Reference in New Issue
Block a user