diff --git a/pom.xml b/pom.xml
index 791430ba0e..4796a11ac4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -109,7 +109,7 @@
rxjava
selenium-junit-testng
- solr-fulltext-search
+ solr
spark-java
spring-akka
diff --git a/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltexh/search/model/Product.java b/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltexh/search/model/Product.java
deleted file mode 100644
index b5fb334282..0000000000
--- a/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltexh/search/model/Product.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.baeldung.solr.fulltexh.search.model;
-
-public class Product {
-
-}
diff --git a/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltexh/search/service/SolrSearchService.java b/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltexh/search/service/SolrSearchService.java
deleted file mode 100644
index aa511f0e1b..0000000000
--- a/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltexh/search/service/SolrSearchService.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.baeldung.solr.fulltexh.search.service;
-
-public interface SolrSearchService {
-
-}
diff --git a/solr-fulltext-search/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceIntegrationTest.java b/solr-fulltext-search/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceIntegrationTest.java
deleted file mode 100644
index 94661ffc2e..0000000000
--- a/solr-fulltext-search/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceIntegrationTest.java
+++ /dev/null
@@ -1,374 +0,0 @@
-package com.baeldung.solr.fulltext.search.service;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.response.FacetField.Count;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.client.solrj.response.RangeFacet;
-import org.apache.solr.client.solrj.response.SpellCheckResponse;
-import org.apache.solr.client.solrj.response.SpellCheckResponse.Suggestion;
-import org.apache.solr.client.solrj.response.SuggesterResponse;
-import org.apache.solr.common.SolrDocument;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.baeldung.solr.fulltext.search.model.Item;
-
-public class ItemSearchServiceIntegrationTest {
-
- private static SolrClient solrClient;
- private static ItemSearchService itemSearchService;
- private static final String solrUrl = "http://localhost:8987/solr/item";
-
- @BeforeClass
- public static void initBeans() throws Exception {
- solrClient = new HttpSolrClient.Builder(solrUrl).build();
- itemSearchService = new ItemSearchServiceImpl(solrClient);
-
- solrClient.commit();
- }
-
- @Before
- public void clearSolrData() throws Exception {
- solrClient.deleteByQuery("*:*");
- }
-
- @Test
- public void whenIndexing_thenAvailableOnRetrieval() throws Exception {
- itemSearchService.index("hm0001", "Washing Machine", "Home Appliances", 450f);
- final SolrDocument indexedDoc = solrClient.getById("hm0001");
- assertEquals("hm0001", indexedDoc.get("id"));
- }
-
- @Test
- public void whenIndexingBean_thenAvailableOnRetrieval() throws Exception {
- Item item = new Item();
- item.setId("hm0002");
- item.setCategory("Televisions");
- item.setDescription("LED TV 32");
- item.setPrice(500);
- itemSearchService.indexBean(item);
- }
-
- @Test
- public void whenSearchingByBasicQuery_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 450f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 450f);
- itemSearchService.index("hm0003", "LED TV 32", "Brand1 Home Appliances", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("brand1");
- query.setStart(0);
- query.setRows(10);
-
- QueryResponse response = solrClient.query(query);
- List- items = response.getBeans(Item.class);
-
- assertEquals(3, items.size());
-
- }
-
- @Test
- public void whenSearchingWithWildCard_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 450f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 450f);
- itemSearchService.index("hm0003", "LED TV 32", "Brand1 Home Appliances", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("*rand?");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(3, items.size());
- }
-
- @Test
- public void whenSearchingWithLogicalOperators_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 450f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 450f);
- itemSearchService.index("hm0003", "Brand2 LED TV 32", "Washing Appliances", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("brand1 AND (Washing OR Refrigerator)");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(2, items.size());
- }
-
- @Test
- public void whenSearchingWithFields_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("0001", "Brand1 Washing Machine", "Home Appliances", 450f);
- itemSearchService.index("0002", "Brand1 Refrigerator", "Home Appliances", 450f);
- itemSearchService.index("0003", "Brand2 LED TV 32", "Brand1 Washing Home Appliances", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("description:Brand* AND category:*Washing*");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(1, items.size());
- }
-
- @Test
- public void whenSearchingWithPhrase_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 450f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 450f);
- itemSearchService.index("hm0003", "Brand2 Dishwasher", "Washing tools and equipment ", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("washing MachIne");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(2, items.size());
- }
-
- @Test
- public void whenSearchingWithRealPhrase_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 450f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 450f);
- itemSearchService.index("hm0003", "Brand2 Dishwasher", "Washing tools and equipment ", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("\"washing machine\"");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(1, items.size());
- }
-
- @Test
- public void whenSearchingPhraseWithProximity_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 450f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 450f);
- itemSearchService.index("hm0003", "Brand2 Dishwasher", "Washing tools and equipment ", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("\"Washing equipment\"~2");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(1, items.size());
- }
-
- @Test
- public void whenSearchingWithPriceRange_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 300f);
- itemSearchService.index("hm0003", "Brand2 Dishwasher", "Home Appliances", 200f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "Washing tools and equipment ", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("price:[100 TO 300]");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(3, items.size());
- }
-
- @Test
- public void whenSearchingWithPriceRangeInclusiveExclusive_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 300f);
- itemSearchService.index("hm0003", "Brand2 Dishwasher", "Home Appliances", 200f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "Washing tools and equipment ", 450f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("price:{100 TO 300]");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(2, items.size());
- }
-
- @Test
- public void whenSearchingWithFilterQuery_thenAllMatchingItemsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 300f);
- itemSearchService.index("hm0003", "Brand2 Ceiling Fan", "Home Appliances", 200f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "Washing tools and equipment ", 250f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("price:[100 TO 300]");
- query.addFilterQuery("description:Brand1", "category:Home Appliances");
-
- QueryResponse response = solrClient.query(query);
- List
- items = response.getBeans(Item.class);
-
- assertEquals(2, items.size());
- }
-
- @Test
- public void whenSearchingWithFacetFields_thenAllMatchingFacetsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "CategoryA", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "CategoryA", 300f);
- itemSearchService.index("hm0003", "Brand2 Ceiling Fan", "CategoryB", 200f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "CategoryB", 250f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("*:*");
- query.addFacetField("category");
-
- QueryResponse response = solrClient.query(query);
- List facetResults = response.getFacetField("category").getValues();
-
- assertEquals(2, facetResults.size());
-
- for (Count count : facetResults) {
- if ("categorya".equalsIgnoreCase(count.getName())) {
- assertEquals(2, count.getCount());
- } else if ("categoryb".equalsIgnoreCase(count.getName())) {
- assertEquals(2, count.getCount());
- } else {
- fail("unexpected category");
- }
- }
- }
-
- @Test
- public void whenSearchingWithFacetQuery_thenAllMatchingFacetsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "CategoryA", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "CategoryA", 300f);
- itemSearchService.index("hm0003", "Brand2 Ceiling Fan", "CategoryB", 200f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "CategoryB", 250f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("*:*");
-
- query.addFacetQuery("Washing OR Refrigerator");
- query.addFacetQuery("Brand2");
-
- QueryResponse response = solrClient.query(query);
- Map facetQueryMap = response.getFacetQuery();
-
- assertEquals(2, facetQueryMap.size());
-
- for (Map.Entry entry : facetQueryMap.entrySet()) {
- String facetQuery = entry.getKey();
-
- if ("Washing OR Refrigerator".equals(facetQuery)) {
- assertEquals(Integer.valueOf(2), entry.getValue());
- } else if ("Brand2".equals(facetQuery)) {
- assertEquals(Integer.valueOf(2), entry.getValue());
- } else {
- fail("unexpected query");
- }
-
- }
- }
-
- @Test
- public void whenSearchingWithFacetRange_thenAllMatchingFacetsShouldAvialble() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "CategoryA", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "CategoryA", 125f);
- itemSearchService.index("hm0003", "Brand2 Ceiling Fan", "CategoryB", 150f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "CategoryB", 250f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("*:*");
-
- query.addNumericRangeFacet("price", 100, 275, 25);
-
- QueryResponse response = solrClient.query(query);
- List rangeFacets = response.getFacetRanges().get(0).getCounts();
-
- assertEquals(7, rangeFacets.size());
- }
-
- @Test
- public void whenSearchingWithHitHighlighting_thenKeywordsShouldBeHighlighted() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 300f);
- itemSearchService.index("hm0003", "Brand2 Ceiling Fan", "Home Appliances", 200f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "Washing equipments", 250f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("Appliances");
- query.setHighlight(true);
- query.addHighlightField("category");
- query.setHighlightSimplePre("");
- query.setHighlightSimplePost("");
- QueryResponse response = solrClient.query(query);
-
- Map>> hitHighlightedMap = response.getHighlighting();
- Map> highlightedFieldMap = hitHighlightedMap.get("hm0001");
- List highlightedList = highlightedFieldMap.get("category");
- String highLightedText = highlightedList.get(0);
-
- assertEquals("Home Appliances", highLightedText);
-
- }
-
- @Test
- public void whenSearchingWithKeywordWithMistake_thenSpellingSuggestionsShouldBeReturned() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 300f);
- itemSearchService.index("hm0003", "Brand2 Ceiling Fan", "Home Appliances", 200f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "Washing equipments", 250f);
-
- SolrQuery query = new SolrQuery();
- query.setQuery("hme");
- query.set("spellcheck", "on");
- QueryResponse response = solrClient.query(query);
-
- SpellCheckResponse spellCheckResponse = response.getSpellCheckResponse();
-
- assertEquals(false, spellCheckResponse.isCorrectlySpelled());
-
- Suggestion suggestion = spellCheckResponse.getSuggestions().get(0);
-
- assertEquals("hme", suggestion.getToken());
-
- List alternatives = suggestion.getAlternatives();
- String alternative = alternatives.get(0);
-
- assertEquals("home", alternative);
- }
-
- @Test
- public void whenSearchingWithIncompleteKeyword_thenKeywordSuggestionsShouldBeReturned() throws Exception {
- itemSearchService.index("hm0001", "Brand1 Washing Machine", "Home Appliances", 100f);
- itemSearchService.index("hm0002", "Brand1 Refrigerator", "Home Appliances", 300f);
- itemSearchService.index("hm0003", "Brand2 Ceiling Fan", "Home Appliances", 200f);
- itemSearchService.index("hm0004", "Brand2 Dishwasher", "Home washing equipments", 250f);
-
- SolrQuery query = new SolrQuery();
- query.setRequestHandler("/suggest");
- query.set("suggest", "true");
- query.set("suggest.build", "true");
- query.set("suggest.dictionary", "mySuggester");
- query.set("suggest.q", "Hom");
- QueryResponse response = solrClient.query(query);
-
- SuggesterResponse suggesterResponse = response.getSuggesterResponse();
- Map> suggestedTerms = suggesterResponse.getSuggestedTerms();
- List suggestions = suggestedTerms.get("mySuggester");
-
- assertEquals(2, suggestions.size());
-
- for (String term : suggestions) {
- if (!"Home Appliances".equals(term) && !"Home washing equipments".equals(term)) {
- fail("Unexpected suggestions");
- }
- }
-
- }
-
-}
diff --git a/solr-fulltext-search/pom.xml b/solr/pom.xml
similarity index 95%
rename from solr-fulltext-search/pom.xml
rename to solr/pom.xml
index 5b2950d64c..e784d87157 100644
--- a/solr-fulltext-search/pom.xml
+++ b/solr/pom.xml
@@ -3,10 +3,10 @@
4.0.0
com.baeldung
- solr-fulltext-search
+ solr
0.0.1-SNAPSHOT
jar
- solr-fulltext-search
+ solr
diff --git a/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltext/search/model/Item.java b/solr/src/main/java/com/baeldung/solr/fulltext/search/model/Item.java
similarity index 100%
rename from solr-fulltext-search/src/main/java/com/baeldung/solr/fulltext/search/model/Item.java
rename to solr/src/main/java/com/baeldung/solr/fulltext/search/model/Item.java
diff --git a/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltext/search/service/ItemSearchService.java b/solr/src/main/java/com/baeldung/solr/fulltext/search/service/ItemSearchService.java
similarity index 100%
rename from solr-fulltext-search/src/main/java/com/baeldung/solr/fulltext/search/service/ItemSearchService.java
rename to solr/src/main/java/com/baeldung/solr/fulltext/search/service/ItemSearchService.java
diff --git a/solr-fulltext-search/src/main/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceImpl.java b/solr/src/main/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceImpl.java
similarity index 100%
rename from solr-fulltext-search/src/main/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceImpl.java
rename to solr/src/main/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceImpl.java
diff --git a/solr-fulltext-search/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceLiveTest.java b/solr/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceLiveTest.java
similarity index 99%
rename from solr-fulltext-search/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceLiveTest.java
rename to solr/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceLiveTest.java
index 1489d40787..3704f4c34c 100644
--- a/solr-fulltext-search/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceLiveTest.java
+++ b/solr/src/test/java/com/baeldung/solr/fulltext/search/service/ItemSearchServiceLiveTest.java
@@ -26,7 +26,7 @@ public class ItemSearchServiceLiveTest {
private static SolrClient solrClient;
private static ItemSearchService itemSearchService;
- private static final String solrUrl = "http://localhost:8987/solr/item";
+ private static final String solrUrl = "http://localhost:8983/solr/item";
@BeforeClass
public static void initBeans() throws Exception {