Skip to content

Commit

Permalink
Add type_s field to nested documents as their prefix
Browse files Browse the repository at this point in the history
  • Loading branch information
wwtamu committed Jan 8, 2025
1 parent fca75a7 commit 4b8f188
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 19 deletions.
6 changes: 6 additions & 0 deletions src/main/java/edu/tamu/scholars/discovery/AppConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

public class AppConstants {

public static final char DOT = '.';

public static final char FORWARD_SLASH = '/';

public static final String ID = "id";

public static final String CLASS = "class";
Expand All @@ -18,6 +22,8 @@ public class AppConstants {

public static final String COLLECTIONS = "_collections_";

public static final String TYPE_S = "type_s";

public static final String WILDCARD = "*";

public static final String QUERY_DELIMETER = ":";
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/edu/tamu/scholars/discovery/etl/EtlUtility.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package edu.tamu.scholars.discovery.etl;

import static edu.tamu.scholars.discovery.AppConstants.DOT;
import static org.apache.commons.lang3.StringUtils.isNotEmpty;

import edu.tamu.scholars.discovery.etl.model.DataFieldDescriptor;
Expand All @@ -10,6 +11,13 @@ private EtlUtility() {

}

public static String getFieldPrefix(DataFieldDescriptor descriptor) {
String name = getFieldName(descriptor);
int index = name.indexOf(DOT);

return index < 0 ? name : name.substring(0, index);
}

public static String getFieldName(DataFieldDescriptor descriptor) {
return isNestedReference(descriptor)
? descriptor.getNestedReference().getKey()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,9 @@ private void preprocessFields() {
List<Field> fields = new ArrayList<>();
List<CopyField> copyFields = new ArrayList<>();

processField(getDescriptor(LABEL, false), fields, copyFields);
processField(getDescriptor(CLASS, false), fields, copyFields);
processField(getDescriptor("_collections_", true), fields, copyFields);
processField(getDescriptor(LABEL, true, false), fields, copyFields);
processField(getDescriptor(CLASS, false, false), fields, copyFields);
processField(getDescriptor("_collections_", false, true), fields, copyFields);

this.data.getFields()
.stream()
Expand Down Expand Up @@ -165,9 +165,10 @@ private void processField(DataFieldDescriptor descriptor, List<Field> fields, Li
}
}

private DataFieldDescriptor getDescriptor(String name, boolean multiValued) {
private DataFieldDescriptor getDescriptor(String name, boolean docValues, boolean multiValued) {
DataFieldDescriptor descriptor = new DataFieldDescriptor();
FieldDestination destination = new FieldDestination();
destination.setDocValues(docValues);
destination.setMultiValued(multiValued);

descriptor.setName(name);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import static edu.tamu.scholars.discovery.AppConstants.ID_PATH_DELIMITER;
import static edu.tamu.scholars.discovery.AppConstants.LABEL;
import static edu.tamu.scholars.discovery.AppConstants.SYNC_IDS;
import static edu.tamu.scholars.discovery.AppConstants.TYPE_S;
import static edu.tamu.scholars.discovery.etl.EtlConstants.NESTED_DELIMITER_PATTERN;
import static edu.tamu.scholars.discovery.etl.EtlUtility.getFieldPrefix;
import static org.apache.commons.lang3.StringUtils.isNotEmpty;

import java.text.ParseException;
Expand Down Expand Up @@ -148,6 +150,8 @@ private SolrInputDocument processNestedValue(
nestedDocument.setField(ID, nestedDocumentId);
nestedDocument.setField(LABEL, nestedDocumentLabel);

nestedDocument.setField(TYPE_S, getFieldPrefix(descriptor));

rootContext.syncIds.add(id);

processNestedReferences(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,18 +137,16 @@ public SolrQueryBuilder withFacets(List<FacetArg> facets) {

public SolrQueryBuilder withBoosts(List<BoostArg> boosts) {
StringBuilder boostedQuery = new StringBuilder(this.query.getQuery());
boosts.forEach(boost -> {
boostedQuery.append(" OR ")
.append("(")
.append(boost.getField())
.append(":")
.append("(")
.append(query)
.append(")")
.append("^")
.append(boost.getValue())
.append(")");
});
boosts.forEach(boost -> boostedQuery.append(" OR ")
.append("(")
.append(boost.getField())
.append(":")
.append("(")
.append(query)
.append(")")
.append("^")
.append(boost.getValue())
.append(")"));

this.query.setQuery(boostedQuery.toString());

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package edu.tamu.scholars.discovery.model.serializer;

import static edu.tamu.scholars.discovery.AppConstants.COLLECTIONS;
import static edu.tamu.scholars.discovery.AppConstants.DOT;
import static edu.tamu.scholars.discovery.AppConstants.FORWARD_SLASH;
import static edu.tamu.scholars.discovery.AppConstants.ID;

import java.io.IOException;
Expand All @@ -17,9 +19,6 @@

public class UnwrappingIndividualSerializer extends JsonSerializer<Individual> {

private static final char DOT = '.';
private static final char FORWARD_SLASH = '/';

private static final Set<String> EXCLUDED_FIELDS = Set.of(
"_root_",
"_version_",
Expand Down

0 comments on commit 4b8f188

Please sign in to comment.