Search in sources :

Example 21 with SearchServer

use of com.rbmhtechnology.vind.api.SearchServer in project vind by RBMHTechnology.

the class SolrSearchServerTest method testConfigureCoreReal.

// is ignored because tests (and therefor requires) a remote solr server
@Test
@Ignore
public void testConfigureCoreReal() throws Exception {
    SearchConfiguration.set(SearchConfiguration.SERVER_HOST, "http://localhost:8983/solr");
    SearchServer server = SearchServer.getInstance("assets");
    server.commit();
}
Also used : SolrSearchServer(com.rbmhtechnology.vind.solr.backend.SolrSearchServer) SearchServer(com.rbmhtechnology.vind.api.SearchServer) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 22 with SearchServer

use of com.rbmhtechnology.vind.api.SearchServer in project vind by RBMHTechnology.

the class SolrSearchServerTest method testExecuteReal.

// is ignored because tests (and therefor requires) a remote solr server
@Test
@Ignore
public void testExecuteReal() throws Exception {
    SearchConfiguration.set(SearchConfiguration.SERVER_HOST, "http://localhost:8983/solr/searchindex");
    SearchServer server = SearchServer.getInstance();
    FieldDescriptor<String> title = new FieldDescriptorBuilder().setBoost(2).setLanguage(Language.German).buildTextField("title");
    DocumentFactory factory = new DocumentFactoryBuilder("asset").addField(title).build();
    server.index(factory.createDoc("1").setValue(title, "Hello World"));
    server.commit();
    assertEquals(1, server.execute(Search.fulltext(), factory).getNumOfResults());
}
Also used : DocumentFactory(com.rbmhtechnology.vind.model.DocumentFactory) SolrSearchServer(com.rbmhtechnology.vind.solr.backend.SolrSearchServer) SearchServer(com.rbmhtechnology.vind.api.SearchServer) FieldDescriptorBuilder(com.rbmhtechnology.vind.model.FieldDescriptorBuilder) DocumentFactoryBuilder(com.rbmhtechnology.vind.model.DocumentFactoryBuilder) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 23 with SearchServer

use of com.rbmhtechnology.vind.api.SearchServer in project vind by RBMHTechnology.

the class SearchApplication method main.

public static void main(String... args) {
    log.info("Building Field-Descriptors");
    final FieldDescriptor<String> title = new FieldDescriptorBuilder().setFullText(true).setSuggest(true).buildTextField("title");
    final MultiValueFieldDescriptor.TextFieldDescriptor<String> category = new FieldDescriptorBuilder().setFullText(false).setSuggest(true).setFacet(true).buildMultivaluedTextField("category");
    log.info("Building DocumentFactory");
    final DocumentFactory news = new DocumentFactoryBuilder("news").addField(title).addField(category).build();
    // get an instance of a server (in this case a embedded solr server)
    try (SearchServer server = SearchServer.getInstance()) {
        final MonitoringWriter writer = new LogWriter();
        final MonitoringSearchServer monitoringSearchServer = new MonitoringSearchServer(server, writer);
        log.info("Indexing some data");
        server.index(news.createDoc("1").setValue(title, "Headline 1").setValues(category, "Sport", "Economic"));
        server.index(news.createDoc("2").setValue(title, "Headline 2").setValues(category, "Arts"));
        server.commit();
        final SuggestionResult fullSuggest = monitoringSearchServer.execute(Search.suggest().fields(title, category), news);
        log.info("Suggestion: {}", fullSuggest.get(title));
        log.info("Suggestion: {}", fullSuggest.get(category));
        final SuggestionResult titleSuggestions = monitoringSearchServer.execute(Search.suggest().text("Ar").fields(title, category), news);
        log.info("Suggestion: {}", titleSuggestions.get(title));
    }
}
Also used : LogWriter(com.rbmhtechnology.vind.monitoring.log.writer.LogWriter) SuggestionResult(com.rbmhtechnology.vind.api.result.SuggestionResult) MonitoringSearchServer(com.rbmhtechnology.vind.monitoring.MonitoringSearchServer) MonitoringWriter(com.rbmhtechnology.vind.monitoring.logger.MonitoringWriter) MonitoringSearchServer(com.rbmhtechnology.vind.monitoring.MonitoringSearchServer) SearchServer(com.rbmhtechnology.vind.api.SearchServer)

Example 24 with SearchServer

use of com.rbmhtechnology.vind.api.SearchServer in project vind by RBMHTechnology.

the class SearchApplication method main.

public static void main(String[] args) {
    // get an instance of a server (in this case a embedded solr server)
    try (SearchServer server = SearchServer.getInstance()) {
        final MonitoringWriter writer = new LogWriter();
        final MonitoringSearchServer monitoringSearchServer = new MonitoringSearchServer(server, writer);
        // index 2 news items
        NewsItem i1 = new NewsItem("1", "New Vind instance needed", ZonedDateTime.now().minusMonths(3));
        NewsItem i2 = new NewsItem("2", "Vind instance available", ZonedDateTime.now());
        server.indexBean(i1);
        server.indexBean(i2);
        logger.info("indexed beans.");
        // don't forget to commit
        server.commit();
        // a first (empty) search, which should retrieve all
        BeanSearchResult<NewsItem> result = monitoringSearchServer.execute(Search.fulltext(), NewsItem.class);
        // e voila, 2 news items are returned
        assert result.getNumOfResults() == 2;
        // delete an item
        monitoringSearchServer.deleteBean(i1);
        monitoringSearchServer.commit();
        // search again
        result = monitoringSearchServer.execute(Search.fulltext(), NewsItem.class);
        assert result.getNumOfResults() == 1;
        assert result.getResults().get(0).getId().equals("2");
    }
}
Also used : LogWriter(com.rbmhtechnology.vind.monitoring.log.writer.LogWriter) MonitoringSearchServer(com.rbmhtechnology.vind.monitoring.MonitoringSearchServer) MonitoringWriter(com.rbmhtechnology.vind.monitoring.logger.MonitoringWriter) MonitoringSearchServer(com.rbmhtechnology.vind.monitoring.MonitoringSearchServer) SearchServer(com.rbmhtechnology.vind.api.SearchServer) NewsItem(com.rbmhtechnology.vind.demo.step1.model.NewsItem)

Example 25 with SearchServer

use of com.rbmhtechnology.vind.api.SearchServer in project vind by RBMHTechnology.

the class SearchApplication method main.

public static void main(String[] args) {
    // get an instance of a server (in this case a embedded solr server)
    SearchServer server = SearchServer.getInstance();
    final MonitoringWriter writer = new LogWriter();
    final InterfaceApplication application = new InterfaceApplication("Application name", "0.0.0", new Interface("sugar-love", "0.0.0"));
    final MonitoringSearchServer monitoringSearchServer = new MonitoringSearchServer(server, application, writer);
    monitoringSearchServer.setSession(new UserSession("session-ID-1234567", new User("user 2", "user-ID-2")));
    // index 2 news items
    NewsItem i1 = new NewsItem("1", "New Vind instance needed", ZonedDateTime.now().minusMonths(3), "article", "coding");
    NewsItem i2 = new NewsItem("2", "Vind instance available", ZonedDateTime.now(), "blog", "coding", "release");
    server.indexBean(i1);
    server.indexBean(i2);
    server.commit();
    // this search should retrieve news items that should match the search term best
    FulltextSearch search = Search.fulltext("vind release");
    BeanSearchResult<NewsItem> result = monitoringSearchServer.execute(search, NewsItem.class);
    // lets log the results
    System.out.println("\n--- Search 1: Fulltext ---");
    result.getResults().forEach(System.out::println);
    System.out.println();
    // now we want to have also the facets for category and kind.
    // additionally we change the query
    search.text("vind");
    search.facet("category", "kind");
    result = monitoringSearchServer.execute(search, NewsItem.class);
    System.out.println("\n--- Search 2.1: Category Facets ---");
    result.getFacetResults().getTermFacet("category", String.class).getValues().forEach(System.out::println);
    System.out.println();
    System.out.println("--- Search 2.2: Kind Facets ---");
    result.getFacetResults().getTermFacet("kind", String.class).getValues().forEach(System.out::println);
    System.out.println();
    monitoringSearchServer.setSession(new UserSession("session-ID-12345678", new User("user 3", "user-ID-3")));
    // new we define a search order based on the 'created ' field
    search.sort(desc("created"));
    result = monitoringSearchServer.execute(search, NewsItem.class);
    System.out.println("\n--- Search 3: Sort by created descending ---");
    result.getResults().forEach(System.out::println);
    System.out.println();
    // now we want to filter for all items with the kind 'blog'.
    result = monitoringSearchServer.execute(Search.fulltext().filter(eq("kind", "blog")), NewsItem.class);
    System.out.println("\n--- Search 4: Filtered by kind=blog ---");
    result.getResults().forEach(System.out::println);
    System.out.println();
    // this search should retrieve news items
    // we set the page to 1 and the pagesize to 1
    result = monitoringSearchServer.execute(Search.fulltext().page(1, 1), NewsItem.class);
    // lets log the results
    System.out.println("\n--- Search 5.1: Paging (Page 1) ---");
    result.getResults().forEach(System.out::println);
    System.out.println();
    // the result itself supports paging, so we can loop the pages
    while (((BeanPageResult) result).hasNextPage()) {
        result = ((BeanPageResult) result).nextPage();
        System.out.println("\n--- Search 5.2: Paging (Page " + ((BeanPageResult) result).getPage() + ") ---");
        result.getResults().forEach(System.out::println);
        System.out.println();
    }
    // suggest
    SuggestionResult suggestions = monitoringSearchServer.execute(Search.suggest("c").fields("category"), NewsItem.class);
    System.out.println("\n--- Suggestions: ---");
    System.out.println(suggestions.get("category").getValues());
    System.out.println();
    // close the server
    server.close();
}
Also used : InterfaceApplication(com.rbmhtechnology.vind.monitoring.model.application.InterfaceApplication) User(com.rbmhtechnology.vind.monitoring.model.user.User) MonitoringSearchServer(com.rbmhtechnology.vind.monitoring.MonitoringSearchServer) MonitoringSearchServer(com.rbmhtechnology.vind.monitoring.MonitoringSearchServer) SearchServer(com.rbmhtechnology.vind.api.SearchServer) BeanPageResult(com.rbmhtechnology.vind.api.result.BeanPageResult) LogWriter(com.rbmhtechnology.vind.monitoring.log.writer.LogWriter) SuggestionResult(com.rbmhtechnology.vind.api.result.SuggestionResult) MonitoringWriter(com.rbmhtechnology.vind.monitoring.logger.MonitoringWriter) UserSession(com.rbmhtechnology.vind.monitoring.model.session.UserSession) Interface(com.rbmhtechnology.vind.monitoring.model.Interface.Interface) FulltextSearch(com.rbmhtechnology.vind.api.query.FulltextSearch) NewsItem(com.rbmhtechnology.vind.demo.step2.model.NewsItem)

Aggregations

SearchServer (com.rbmhtechnology.vind.api.SearchServer)50 Test (org.junit.Test)46 SolrInputDocument (org.apache.solr.common.SolrInputDocument)31 Document (com.rbmhtechnology.vind.api.Document)30 SearchResult (com.rbmhtechnology.vind.api.result.SearchResult)28 FulltextSearch (com.rbmhtechnology.vind.api.query.FulltextSearch)24 ZonedDateTime (java.time.ZonedDateTime)16 SuggestionResult (com.rbmhtechnology.vind.api.result.SuggestionResult)13 MultiValueFieldDescriptor (com.rbmhtechnology.vind.model.MultiValueFieldDescriptor)12 PageResult (com.rbmhtechnology.vind.api.result.PageResult)11 Interval (com.rbmhtechnology.vind.api.query.facet.Interval)10 DateMathExpression (com.rbmhtechnology.vind.api.query.datemath.DateMathExpression)9 Delete (com.rbmhtechnology.vind.api.query.delete.Delete)9 GetResult (com.rbmhtechnology.vind.api.result.GetResult)9 LatLng (com.rbmhtechnology.vind.model.value.LatLng)8 ByteBuffer (java.nio.ByteBuffer)8 Language (com.rbmhtechnology.vind.annotations.language.Language)7 Search (com.rbmhtechnology.vind.api.query.Search)7 TimeUnit (com.rbmhtechnology.vind.api.query.datemath.DateMathExpression.TimeUnit)7 Facets (com.rbmhtechnology.vind.api.query.facet.Facets)7