[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:
KevinVdV
2014-12-17 10:42:44 +01:00
parent c417798a79
commit 02ff2d874f
3 changed files with 25 additions and 5 deletions

View File

@@ -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);
for (Metadatum meta : mydc)
{
@@ -989,7 +990,6 @@ 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 (toIgnoreMetadataFields != null && (toIgnoreMetadataFields.contains(field) || toIgnoreMetadataFields.contains(unqualifiedField + "." + Item.ANY)))
{

View File

@@ -13,6 +13,8 @@ import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
import org.dspace.core.Context;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: kevin
@@ -25,12 +27,29 @@ public class SolrServiceSpellIndexingPlugin implements SolrServiceIndexPlugin {
@Override
public void additionalIndex(Context context, DSpaceObject dso, SolrInputDocument document) {
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) {
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);
}
}
}
}
}

View File

@@ -9,6 +9,7 @@ package org.dspace.discovery.configuration;
import org.dspace.utils.DSpace;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -18,7 +19,7 @@ import java.util.Map;
public class DiscoveryConfigurationService {
private Map<String, DiscoveryConfiguration> map;
private Map<Integer, List<String>> toIgnoreMetadataFields;
private Map<Integer, List<String>> toIgnoreMetadataFields = new HashMap<>();
public Map<String, DiscoveryConfiguration> getMap() {
return map;