/** * Determines if negation terms are present in the search phrase. * * @param indexSearchRequest the {@link IndexSearchRequest} as specified * * @return true if present */ public boolean determineNegationTermsPresent(final IndexSearchRequest indexSearchRequest) { final Matcher regexMatcher = getNegationTermMatcher(indexSearchRequest); return regexMatcher.find(); }
when(elasticsearchHelper.addFacetFieldAggregations(any(), any(SearchRequestBuilder.class))).thenReturn(searchRequestBuilder); when(herdSearchQueryHelper.determineNegationTermsPresent(any(IndexSearchRequest.class))).thenCallRealMethod(); when(herdSearchQueryHelper.extractNegationTerms(any(IndexSearchRequest.class))).thenCallRealMethod(); when(herdSearchQueryHelper.extractSearchPhrase(any(IndexSearchRequest.class))).thenCallRealMethod(); verify(herdSearchQueryHelper).determineNegationTermsPresent(indexSearchRequest); verify(herdSearchQueryHelper).extractNegationTerms(indexSearchRequest); verify(herdSearchQueryHelper).extractSearchPhrase(indexSearchRequest); verify(configurationHelper, times(3)).getProperty(ConfigurationValue.ELASTICSEARCH_SEARCHABLE_FIELDS_STEMMED); verify(configurationHelper).getProperty(ConfigurationValue.ELASTICSEARCH_SEARCHABLE_FIELDS_NGRAMS);
@Test public void extractNegationTerms() throws Exception { IndexSearchRequest indexSearchRequest = new IndexSearchRequest(); indexSearchRequest.setSearchTerm("foo -foo bar -bar foobar"); Assert.assertEquals(Arrays.asList("foo", "bar"), herdSearchQueryHelper.extractNegationTerms(indexSearchRequest)); indexSearchRequest.setSearchTerm("foo -foo bar -bar foobar"); Assert.assertEquals(Arrays.asList("foo", "bar"), herdSearchQueryHelper.extractNegationTerms(indexSearchRequest)); }
@Test public void determineNegationTermsPresent() throws Exception { IndexSearchRequest indexSearchRequest = new IndexSearchRequest(); indexSearchRequest.setSearchTerm(" -foo"); Assert.assertTrue(herdSearchQueryHelper.determineNegationTermsPresent(indexSearchRequest)); indexSearchRequest.setSearchTerm("foo -bar foobar"); Assert.assertTrue(herdSearchQueryHelper.determineNegationTermsPresent(indexSearchRequest)); indexSearchRequest.setSearchTerm(" "); Assert.assertFalse(herdSearchQueryHelper.determineNegationTermsPresent(indexSearchRequest)); indexSearchRequest.setSearchTerm("-bar"); Assert.assertFalse(herdSearchQueryHelper.determineNegationTermsPresent(indexSearchRequest)); indexSearchRequest.setSearchTerm("foo bar"); Assert.assertFalse(herdSearchQueryHelper.determineNegationTermsPresent(indexSearchRequest)); indexSearchRequest.setSearchTerm("foo-bar"); Assert.assertFalse(herdSearchQueryHelper.determineNegationTermsPresent(indexSearchRequest)); }
@Test public void extractSearchPhrase() throws Exception { IndexSearchRequest indexSearchRequest = new IndexSearchRequest(); indexSearchRequest.setSearchTerm("foo -foo bar -bar foobar"); Assert.assertEquals("foo bar foobar", herdSearchQueryHelper.extractSearchPhrase(indexSearchRequest)); }
boolean negationTermsExist = herdSearchQueryHelper.determineNegationTermsPresent(indexSearchRequest); List<String> negationTerms = herdSearchQueryHelper.extractNegationTerms(indexSearchRequest); searchPhrase = herdSearchQueryHelper.extractSearchPhrase(indexSearchRequest);
boolean negationTermsExist = herdSearchQueryHelper.determineNegationTermsPresent(indexSearchRequest); List<String> negationTerms = herdSearchQueryHelper.extractNegationTerms(indexSearchRequest); searchPhrase = herdSearchQueryHelper.extractSearchPhrase(indexSearchRequest);
/** * Determines if negation terms are present in the search phrase. * * @param indexSearchRequest the {@link IndexSearchRequest} as specified * * @return true if present */ public boolean determineNegationTermsPresent(final IndexSearchRequest indexSearchRequest) { final Matcher regexMatcher = getNegationTermMatcher(indexSearchRequest); return regexMatcher.find(); }
/** * Helper to extract negation terms from a given search query. * * @param indexSearchRequest the {@link IndexSearchRequest} as specified * * @return A {@link List} of type {@link String} */ public List<String> extractNegationTerms(final IndexSearchRequest indexSearchRequest) { final Matcher regexMatcher = getNegationTermMatcher(indexSearchRequest); final List<String> negationTerms = new ArrayList<>(); while (regexMatcher.find()) { // extract all matches and return only the words negationTerms.add(regexMatcher.group().replaceAll("-", "").trim()); } return negationTerms; }
/** * Helper to extract negation terms from a given search query. * * @param indexSearchRequest the {@link IndexSearchRequest} as specified * * @return A {@link List} of type {@link String} */ public List<String> extractNegationTerms(final IndexSearchRequest indexSearchRequest) { final Matcher regexMatcher = getNegationTermMatcher(indexSearchRequest); final List<String> negationTerms = new ArrayList<>(); while (regexMatcher.find()) { // extract all matches and return only the words negationTerms.add(regexMatcher.group().replaceAll("-", "").trim()); } return negationTerms; }
/** * Helper to clean the search phrase of negation terms. * * @param indexSearchRequest the {@link IndexSearchRequest} as specified * * @return A {@link String} without the negation terms */ public String extractSearchPhrase(final IndexSearchRequest indexSearchRequest) { final Matcher regexMatcher = getNegationTermMatcher(indexSearchRequest); String searchPhrase = indexSearchRequest.getSearchTerm(); while (regexMatcher.find()) { // extract all matches and remove them from the original search phrase searchPhrase = searchPhrase.replace(regexMatcher.group(), StringUtils.EMPTY); } return searchPhrase.trim(); }
/** * Helper to clean the search phrase of negation terms. * * @param indexSearchRequest the {@link IndexSearchRequest} as specified * * @return A {@link String} without the negation terms */ public String extractSearchPhrase(final IndexSearchRequest indexSearchRequest) { final Matcher regexMatcher = getNegationTermMatcher(indexSearchRequest); String searchPhrase = indexSearchRequest.getSearchTerm(); while (regexMatcher.find()) { // extract all matches and remove them from the original search phrase searchPhrase = searchPhrase.replace(regexMatcher.group(), StringUtils.EMPTY); } return searchPhrase.trim(); }