mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
Merge pull request #2527 from atmire/w2p-64809_Updating-indexing-method
Discovery indexing: Ensuring discovery configuration is used during indexing
This commit is contained in:
@@ -10,9 +10,9 @@ package org.dspace.discovery;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.dspace.content.Collection;
|
||||
import org.dspace.content.DSpaceObject;
|
||||
@@ -140,26 +140,26 @@ public class SearchUtils {
|
||||
private static List<DiscoveryConfiguration> getAllDiscoveryConfigurations(String prefix,
|
||||
List<Collection> collections, Item item)
|
||||
throws SQLException {
|
||||
Map<String, DiscoveryConfiguration> result = new HashMap<String, DiscoveryConfiguration>();
|
||||
Set<DiscoveryConfiguration> result = new HashSet<>();
|
||||
|
||||
for (Collection collection : collections) {
|
||||
DiscoveryConfiguration configuration = getDiscoveryConfiguration(prefix, collection);
|
||||
if (!result.containsKey(configuration.getId())) {
|
||||
result.put(configuration.getId(), configuration);
|
||||
}
|
||||
result.add(configuration);
|
||||
}
|
||||
|
||||
//Add alwaysIndex configurations
|
||||
DiscoveryConfigurationService configurationService = getConfigurationService();
|
||||
result.addAll(configurationService.getIndexAlwaysConfigurations());
|
||||
|
||||
//Also add one for the default
|
||||
addConfigurationIfExists(result, prefix);
|
||||
|
||||
return Arrays.asList(result.values().toArray(new DiscoveryConfiguration[result.size()]));
|
||||
return Arrays.asList(result.toArray(new DiscoveryConfiguration[result.size()]));
|
||||
}
|
||||
|
||||
private static void addConfigurationIfExists(Map<String, DiscoveryConfiguration> result, String confName) {
|
||||
private static void addConfigurationIfExists(Set<DiscoveryConfiguration> result, String confName) {
|
||||
DiscoveryConfiguration configurationExtra = getDiscoveryConfigurationByName(confName);
|
||||
if (!result.containsKey(configurationExtra.getId())) {
|
||||
result.put(configurationExtra.getId(), configurationExtra);
|
||||
}
|
||||
result.add(configurationExtra);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -51,6 +51,22 @@ public class DiscoveryConfiguration implements InitializingBean {
|
||||
private DiscoveryHitHighlightingConfiguration hitHighlightingConfiguration;
|
||||
private DiscoveryMoreLikeThisConfiguration moreLikeThisConfiguration;
|
||||
private boolean spellCheckEnabled;
|
||||
private boolean indexAlways = false;
|
||||
|
||||
/**
|
||||
* The `indexAlways` property determines whether the configuration should always be included when indexing items.
|
||||
* The default value is false which implies the configuration is only used when it matches the collection or if
|
||||
* it's the default configuration
|
||||
* When set to true, the configuration is also used to index an item without a specific collection mapping
|
||||
* This can be used for displaying different facets depending on the type of item instead of the collection
|
||||
*/
|
||||
public boolean isIndexAlways() {
|
||||
return indexAlways;
|
||||
}
|
||||
|
||||
public void setIndexAlways(boolean indexAlways) {
|
||||
this.indexAlways = indexAlways;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@@ -7,6 +7,7 @@
|
||||
*/
|
||||
package org.dspace.discovery.configuration;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -75,6 +76,22 @@ public class DiscoveryConfigurationService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a list of all DiscoveryConfiguration objects where
|
||||
* {@link org.dspace.discovery.configuration.DiscoveryConfiguration#isIndexAlways()} is true
|
||||
* These configurations should always be included when indexing
|
||||
*/
|
||||
public List<DiscoveryConfiguration> getIndexAlwaysConfigurations() {
|
||||
List<DiscoveryConfiguration> configs = new ArrayList<>();
|
||||
for (String key : map.keySet()) {
|
||||
DiscoveryConfiguration config = map.get(key);
|
||||
if (config.isIndexAlways()) {
|
||||
configs.add(config);
|
||||
}
|
||||
}
|
||||
return configs;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(DSpaceServicesFactory.getInstance().getServiceManager().getServicesNames().size());
|
||||
DiscoveryConfigurationService mainService = DSpaceServicesFactory.getInstance().getServiceManager()
|
||||
|
@@ -516,6 +516,7 @@
|
||||
|
||||
<bean id="publication" class="org.dspace.discovery.configuration.DiscoveryConfiguration" scope="prototype">
|
||||
<property name="id" value="publication"/>
|
||||
<property name="indexAlways" value="true"/>
|
||||
<!--Which sidebar facets are to be displayed-->
|
||||
<property name="sidebarFacets">
|
||||
<list>
|
||||
@@ -586,6 +587,7 @@
|
||||
|
||||
<bean id="person" class="org.dspace.discovery.configuration.DiscoveryConfiguration" scope="prototype">
|
||||
<property name="id" value="person"/>
|
||||
<property name="indexAlways" value="true"/>
|
||||
<!--Which sidebar facets are to be displayed-->
|
||||
<property name="sidebarFacets">
|
||||
<list>
|
||||
@@ -649,6 +651,7 @@
|
||||
<bean id="organization" class="org.dspace.discovery.configuration.DiscoveryConfiguration"
|
||||
scope="prototype">
|
||||
<property name="id" value="organization"/>
|
||||
<property name="indexAlways" value="true"/>
|
||||
<!--Which sidebar facets are to be displayed-->
|
||||
<property name="sidebarFacets">
|
||||
<list>
|
||||
@@ -713,6 +716,7 @@
|
||||
<bean id="publicationIssue" class="org.dspace.discovery.configuration.DiscoveryConfiguration"
|
||||
scope="prototype">
|
||||
<property name="id" value="publicationIssue"/>
|
||||
<property name="indexAlways" value="true"/>
|
||||
<!--Which sidebar facets are to be displayed-->
|
||||
<property name="sidebarFacets">
|
||||
<list>
|
||||
@@ -773,6 +777,7 @@
|
||||
<bean id="publicationVolume" class="org.dspace.discovery.configuration.DiscoveryConfiguration"
|
||||
scope="prototype">
|
||||
<property name="id" value="publicationVolume"/>
|
||||
<property name="indexAlways" value="true"/>
|
||||
<!--Which sidebar facets are to be displayed-->
|
||||
<property name="sidebarFacets">
|
||||
<list>
|
||||
@@ -832,6 +837,7 @@
|
||||
<bean id="periodical" class="org.dspace.discovery.configuration.DiscoveryConfiguration"
|
||||
scope="prototype">
|
||||
<property name="id" value="periodical"/>
|
||||
<property name="indexAlways" value="true"/>
|
||||
<!--Which sidebar facets are to be displayed-->
|
||||
<property name="sidebarFacets">
|
||||
<list>
|
||||
|
Reference in New Issue
Block a user