diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoCollatableTextFieldType.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoCollatableTextFieldType.java index 0bd6f84ab..6e255fbab 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoCollatableTextFieldType.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/AlfrescoCollatableTextFieldType.java @@ -179,7 +179,14 @@ public class AlfrescoCollatableTextFieldType extends StrField else if (withLocale.startsWith("\u0000")) { String[] parts = withLocale.split("\u0000"); - return parts[2]; + if (parts != null && parts.length == 3) + { + return parts[2]; + } + else + { + return withLocale; + } } else { diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/AlfrescoCollatableTextFieldTypeTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/AlfrescoCollatableTextFieldTypeTest.java index d3424bb5a..122880fef 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/AlfrescoCollatableTextFieldTypeTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/AlfrescoCollatableTextFieldTypeTest.java @@ -173,4 +173,17 @@ public class AlfrescoCollatableTextFieldTypeTest verify(mockCollator).compare("NotNull1", "NotNull2"); assertEquals("Expected result to be obtained from collator.", comparisonResult, result); } + + @Test + public void testMNT23094() + { + // Set up the document to have an encoded value for the field. + when(mockDocTerms.get(DOC)).thenReturn(new BytesRef("\u0000")); + when(mockDocsWithField.get(DOC)).thenReturn(false); + + // Call the method under test. + textSortFieldComparator.compareBottom(DOC); + + verify(mockCollator).compare(BOTTOM_STRING, "\u0000"); + } }