mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-18 15:33:09 +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);
|
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
|
* 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
|
* 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 STORE_SEPARATOR = "\n|||\n";
|
||||||
|
|
||||||
public static final String VARIANTS_STORE_SEPARATOR = "###";
|
public static final String VARIANTS_STORE_SEPARATOR = "###";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Non-Static CommonsHttpSolrServer for processing indexing events.
|
* Non-Static CommonsHttpSolrServer for processing indexing events.
|
||||||
*/
|
*/
|
||||||
@@ -636,11 +636,12 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
|||||||
String rights = community.getMetadata("copyright_text");
|
String rights = community.getMetadata("copyright_text");
|
||||||
String title = community.getMetadata("name");
|
String title = community.getMetadata("name");
|
||||||
|
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description", description);
|
List<String> toIgnoreMetadataFields = SearchUtils.getIgnoredMetadataFields(community.getType());
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description.abstract", description_abstract);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description", description);
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description.tableofcontents", description_table);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description.abstract", description_abstract);
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.rights", rights);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description.tableofcontents", description_table);
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.title", title);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.rights", rights);
|
||||||
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.title", title);
|
||||||
|
|
||||||
//Do any additional indexing, depends on the plugins
|
//Do any additional indexing, depends on the plugins
|
||||||
List<SolrServiceIndexPlugin> solrServiceIndexPlugins = new DSpace().getServiceManager().getServicesByType(SolrServiceIndexPlugin.class);
|
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 rights_license = collection.getMetadata("license");
|
||||||
String title = collection.getMetadata("name");
|
String title = collection.getMetadata("name");
|
||||||
|
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description", description);
|
List<String> toIgnoreMetadataFields = SearchUtils.getIgnoredMetadataFields(collection.getType());
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description.abstract", description_abstract);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description", description);
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.description.tableofcontents", description_table);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description.abstract", description_abstract);
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.provenance", provenance);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.description.tableofcontents", description_table);
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.rights", rights);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.provenance", provenance);
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.rights.license", rights_license);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.rights", rights);
|
||||||
addContainerMetadataField(doc, highlightedMetadataFields, "dc.title", title);
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.rights.license", rights_license);
|
||||||
|
addContainerMetadataField(doc, highlightedMetadataFields, toIgnoreMetadataFields, "dc.title", title);
|
||||||
|
|
||||||
|
|
||||||
//Do any additional indexing, depends on the plugins
|
//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 metadataField the metadata field added
|
||||||
* @param value the value (can be NULL !)
|
* @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(StringUtils.isNotBlank(value))
|
||||||
if(highlightedMetadataFields.contains(metadataField))
|
|
||||||
{
|
{
|
||||||
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>();
|
List<String> toProjectionFields = new ArrayList<String>();
|
||||||
String projectionFieldsString = new DSpace().getConfigurationService().getProperty("discovery.index.projection");
|
String projectionFieldsString = new DSpace().getConfigurationService().getProperty("discovery.index.projection");
|
||||||
if(projectionFieldsString != null){
|
if(projectionFieldsString != null){
|
||||||
@@ -867,8 +858,9 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
|||||||
field += "." + meta.qualifier;
|
field += "." + meta.qualifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> toIgnoreMetadataFields = SearchUtils.getIgnoredMetadataFields(item.getType());
|
||||||
//We are not indexing provenance, this is useless
|
//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;
|
continue;
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@ import java.util.Map;
|
|||||||
public class DiscoveryConfigurationService {
|
public class DiscoveryConfigurationService {
|
||||||
|
|
||||||
private Map<String, DiscoveryConfiguration> map;
|
private Map<String, DiscoveryConfiguration> map;
|
||||||
|
private Map<Integer, List<String>> toIgnoreMetadataFields;
|
||||||
|
|
||||||
public Map<String, DiscoveryConfiguration> getMap() {
|
public Map<String, DiscoveryConfiguration> getMap() {
|
||||||
return map;
|
return map;
|
||||||
@@ -27,6 +28,14 @@ public class DiscoveryConfigurationService {
|
|||||||
this.map = map;
|
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) {
|
public static void main(String[] args) {
|
||||||
DSpace dspace = new DSpace();
|
DSpace dspace = new DSpace();
|
||||||
System.out.println(dspace.getServiceManager().getServicesNames().size());
|
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
|
#Char used to ensure that the sidebar facets are case insensitive
|
||||||
#solr.facets.split.char=\n|||\n
|
#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-variants = false
|
||||||
# index.ignore-authority = false
|
# index.ignore-authority = false
|
||||||
index.projection=dc.title,dc.contributor.*,dc.date.issued
|
index.projection=dc.title,dc.contributor.*,dc.date.issued
|
||||||
|
@@ -9,12 +9,15 @@
|
|||||||
|
|
||||||
-->
|
-->
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:context="http://www.springframework.org/schema/context"
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
xmlns:util="http://www.springframework.org/schema/util"
|
||||||
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
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
|
||||||
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">
|
default-autowire-candidates="*Service,*DAO,javax.sql.DataSource">
|
||||||
|
|
||||||
<context:annotation-config /> <!-- allows us to use spring annotations in beans -->
|
<context:annotation-config /> <!-- allows us to use spring annotations in beans -->
|
||||||
@@ -44,6 +47,46 @@
|
|||||||
<!--<entry key="123456789/7621" value-ref="defaultConfiguration"/>-->
|
<!--<entry key="123456789/7621" value-ref="defaultConfiguration"/>-->
|
||||||
</map>
|
</map>
|
||||||
</property>
|
</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>
|
</bean>
|
||||||
|
|
||||||
<!--The default configuration settings for discovery-->
|
<!--The default configuration settings for discovery-->
|
||||||
|
Reference in New Issue
Block a user