Skip to main content

Posts

Showing posts from 2018

ESS - 3.Tools and Technologies involved in modern search architecture - Part I

How Search works? It's amazing how much processing is done behind the scenes of a single search. Here are four crucial tools that form the core of  search processing: Web Crawler (Spiders) Indexing (Inverted Index) Relevance score SERP (Search Engine Results Page) When you make a search in google, yahoo, bing or any popular search engine. The process doesn't involve running a marathon through entire documents present in world wide web. As it becomes heavily complex for every search and increase in data over time so instead every search engine has an index which is simply a lookup database to quickly find the relevant information when say quick they mean it. Google claims it's search results will be delivered in less than 1/2 a second 💪 Web Crawler: - Web crawlers are those little software spiders that goes and indexes all the content following links within one document to another. These web crawlers do their job continuously as the new content gets a...

ESS - 2.Challenges in implementing Search

Perfect Search implementation needs to consider many challenges here's a list of the current day technical challenges:  A very basic search implementation would be searching the documents by using simple text matching this works fine however such an implementation can be used only when you have really accurate details of what to search any change in the wording, tenses or phrases will give you uncertain results. Search engines must be capable of constantly learning from users behavior and constantly improving search engine results. For example, on a search query you got a list of results and most of the users are ignoring the top ones and going for 3rd or 4th one you must provide those results first next time. Map similar queries and provide appropriate search results. Consider a search for "Elasticsearch Getting Started" & "Introduction Elasticsearch" & "Elasticsearch tutorial", the expected results are almost same for each query an effi...

ESS - 1.Purpose of search and example use cases

Why Search? Imagine to locate a file in your machine with no search provided in explorer or by the operating system. Sure it's a scary thing to attempt unless you're retired or bored of life :), search saves a ton of time and efforts in these hard-times. Enterprise Search:   As we know searching within a single machine for a document itself is tiresome and an enterprise is amassed with many such systems and finding a file in such distributed environments gets really tough. Enterprise search does the lookup for you across all these systems and provides the most relevant results. source: programming-free.com Amazon sold a little over 3 billion products in October 2017, that's a minimum of billion queries unless they found stuff on the home page which is not customized for the consumer suppose if this shopping giant had no search and probably organised stuff by categories and asked you to find your product then your approximate worst case time complexity in findi...

Enterprise/Elastic Search Series(ESS) - Pilot

Hi All, Enterprise Search really gained traction in recent times and also improved a lot with many open source contributors like Apache Solr, Elasticsearch and other big players. I am working on an exciting POC to implement search within our organisation and found the underlying technologies and implementation really fascinating. I cannot wait to share all my adventures in this topic since this is a really huge topic I'll be dividing them in a series of blog posts which i named as " ESS - Enterprise Search Series ", which in one way also fits Elastic in the name 😉 Here's the list of topics i plan to learn and i may update this going forward as needed: Purpose of Search and example use cases Challenges to implement Search Tools and technologies involved in modern search architecture Decipher search concepts Elasticsearch - Introduction Elasticsearch - Search concepts implementation Elasticsearch - Document operations using API's (Curl)...

RIDC API to access WebCenter Content

Fix: Missing RIDC libs issue for 12c Earlier (prior to 12c) all the Webcenter Extensions use to be shipped and installed to JDeveloper by just installing Webcenter Extensions to that specific version of JDeveloper but with the latest 12c (12.2.1.3) release there are lot of missing parts in the extensions. After installing extension you pretty much get features to skin the applications and to add, manage custom task-flows. Few of my current applications which are in the process of migration heavily use Webcenter Content I must say all of our content pretty much sits there so upon working my way through documents i found a fix which I got confirmed from the official support team as well to use it. FIX:  Get the extension with name "oracle.ucm.ridc-jdev.zip" from the below location in WebCenter Content Server: $MW_HOME/oracle_common/ucm/Distribution/RIDC/jdev Install the extension to Jdeveloper as below: Help -> Updates Once the extension is installed ...

Most used JAX-RS 2.0 annotations

Collection of most-used JAX-RS annontations: Annotation Usage @Path('<resourcePath>') specifies the relative path of the resource client uses this relative path to invoke the service For example it'll be base URL + /resourcePath https://172.20.126.118:9101/rest/api/bookmarks https://172.20.126.118:9101/rest/api/bookmarks/1234 To build something like above your resource class should be as follows: @Path ( "/bookmarks" ) public class BookmarksResource { @Path ( "{bookmarkId}" ) @GET public Response getBookmarkById ( @PathParam ( "bookmarkId" ) Long bookmarkId ){ //get bookmark by id from DB and build response and return } //invoked when you client uses /bookmarks @GET public Response getBookmarks (){ // return all bookmarks } } @GET Method using the annotation will handle the HTTP GET requests matching on this resource path @Path ( "{bookmarkId...

RESTful Services using Jersey 2.0

Jersey is an implementation of JAX-RS specification which provide API's for developing and exposing applications designed following principles of REST architectural style. Jersey is now part of glassfish that means the upgrade 2.0 is provided from glassfish and has lot of changes shipped with it compared to Jersey 1.0. Here's the  migration guide . Though above migration guide will help. My development involves using Oracle JDeveloper so I haven't really got a chance to use the migration steps myself so I'm making some hand written code again to get a feel of Jersey 2.0 and also along the way I'll try to document needed changes for anyone else going my path. This document includes code that can be used by Java and Oracle ADF developers. Let's roll into code now: Maven dependencies for the maven people: pom.xml: < project   xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " ...