mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-08 10:34:25 +00:00
[DS-2042] Discovery/Solr is improperly indexing the "dc.description.provenance" field. Added the default configuration settings to the SpellIndexPlugin to ensure that the ignored metadata is not indexed in any way.
This commit is contained in:
@@ -971,6 +971,7 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> toIgnoreMetadataFields = SearchUtils.getIgnoredMetadataFields(item.getType());
|
||||||
Metadatum[] mydc = item.getMetadata(Item.ANY, Item.ANY, Item.ANY, Item.ANY);
|
Metadatum[] mydc = item.getMetadata(Item.ANY, Item.ANY, Item.ANY, Item.ANY);
|
||||||
for (Metadatum meta : mydc)
|
for (Metadatum meta : mydc)
|
||||||
{
|
{
|
||||||
@@ -989,7 +990,6 @@ 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 (toIgnoreMetadataFields != null && (toIgnoreMetadataFields.contains(field) || toIgnoreMetadataFields.contains(unqualifiedField + "." + Item.ANY)))
|
if (toIgnoreMetadataFields != null && (toIgnoreMetadataFields.contains(field) || toIgnoreMetadataFields.contains(unqualifiedField + "." + Item.ANY)))
|
||||||
{
|
{
|
||||||
|
@@ -13,6 +13,8 @@ import org.dspace.content.DSpaceObject;
|
|||||||
import org.dspace.content.Item;
|
import org.dspace.content.Item;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created with IntelliJ IDEA.
|
* Created with IntelliJ IDEA.
|
||||||
* User: kevin
|
* User: kevin
|
||||||
@@ -25,12 +27,29 @@ public class SolrServiceSpellIndexingPlugin implements SolrServiceIndexPlugin {
|
|||||||
@Override
|
@Override
|
||||||
public void additionalIndex(Context context, DSpaceObject dso, SolrInputDocument document) {
|
public void additionalIndex(Context context, DSpaceObject dso, SolrInputDocument document) {
|
||||||
if(dso instanceof Item){
|
if(dso instanceof Item){
|
||||||
Metadatum[] dcValues = ((Item) dso).getMetadata(Item.ANY, Item.ANY, Item.ANY, Item.ANY);
|
Item item = (Item) dso;
|
||||||
|
Metadatum[] dcValues = item.getMetadata(Item.ANY, Item.ANY, Item.ANY, Item.ANY);
|
||||||
|
List<String> toIgnoreMetadataFields = SearchUtils.getIgnoredMetadataFields(item.getType());
|
||||||
for (Metadatum dcValue : dcValues) {
|
for (Metadatum dcValue : dcValues) {
|
||||||
|
String field = dcValue.schema + "." + dcValue.element;
|
||||||
|
String unqualifiedField = field;
|
||||||
|
|
||||||
|
String value = dcValue.value;
|
||||||
|
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dcValue.qualifier != null && !dcValue.qualifier.trim().equals(""))
|
||||||
|
{
|
||||||
|
field += "." + dcValue.qualifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!toIgnoreMetadataFields.contains(field)){
|
||||||
document.addField("a_spell", dcValue.value);
|
document.addField("a_spell", dcValue.value);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@ package org.dspace.discovery.configuration;
|
|||||||
|
|
||||||
import org.dspace.utils.DSpace;
|
import org.dspace.utils.DSpace;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -18,7 +19,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;
|
private Map<Integer, List<String>> toIgnoreMetadataFields = new HashMap<>();
|
||||||
|
|
||||||
public Map<String, DiscoveryConfiguration> getMap() {
|
public Map<String, DiscoveryConfiguration> getMap() {
|
||||||
return map;
|
return map;
|
||||||
|
Reference in New Issue
Block a user