{"id":28019,"date":"2015-10-21T11:00:05","date_gmt":"2015-10-21T08:00:05","guid":{"rendered":"http:\/\/examples.javacodegeeks.com\/?p=28019"},"modified":"2020-08-08T16:11:46","modified_gmt":"2020-08-08T13:11:46","slug":"solr-join-example","status":"publish","type":"post","link":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/","title":{"rendered":"Solr Join Example"},"content":{"rendered":"<p>In this example of Solr Join, we will discuss about how to implement join between documents in Apache Solr. We will show you how to implement the Join Query Parser plugin specified by {!join}. The join is used in Solr documents where de-normalizing the data is time consuming or costly.<\/p>\n<p>To demonstrate the Solr Join\u00a0usage, we will create a core in Solr using basic configuration and index sample files shipped along with Solr installation.<\/p>\n<p>Our preferred environment for this example is solr-5.0.0. Before you begin the Solr installation make sure you have JDK installed and Java_Home is set appropriately.<\/p>\n<\/p>\n<h2>1. Install Apache Solr<\/h2>\n<p>To begin with, let&#8217;s download the latest version of Apache Solr from the following location:<\/p>\n<p><code>http:\/\/lucene.apache.org\/solr\/downloads.html<\/code><\/p>\n<p>Apache\u00a0Solr has gone through various changes from 4.x.x to 5.0.0, so if you have a different version of Solr you need to download the 5.x.x. version to follow this example.<\/p>\n<p>Once the Solr zip file is downloaded, unzip it into a folder. The extracted folder will look like the below:<\/p>\n<p><figure id=\"attachment_22328\" aria-describedby=\"caption-attachment-22328\" style=\"width: 663px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_folder1.jpg\"><img decoding=\"async\" class=\"size-full wp-image-22328\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_folder1.jpg\" alt=\"solr_folder\" width=\"663\" height=\"367\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_folder1.jpg 663w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_folder1-300x166.jpg 300w\" sizes=\"(max-width: 663px) 100vw, 663px\" \/><\/a><figcaption id=\"caption-attachment-22328\" class=\"wp-caption-text\">Solr folders<\/figcaption><\/figure><\/p>\n<p>The <code>bin<\/code> folder contains the scripts to start and stop the server. The <code>example<\/code> folder contains few example files. We will be using one of them to demonstrate how Solr indexes the data. The <code>server<\/code> folder contains the <code>logs<\/code> folder where all the Solr logs are written. It will be helpful to check the logs for any error during indexing. The <code>solr<\/code> folder under server holds different collection or core. The configuration and data for each of the core\/ collection\u00a0are stored in the respective core\/ collection\u00a0folder.<\/p>\n<p>Apache Solr comes with an inbuilt Jetty server. But before we start the solr instance we must validate the JAVA_HOME is set on the machine.<\/p>\n<p>We can start the server using the command line script. Lets go\u00a0to the bin directory from the command prompt and issue the following command:<\/p>\n<p><code>solr start<\/code><\/p>\n<p>This will start the Solr server under the default port\u00a08983.<\/p>\n<p>We can now open the following URL in the browser and\u00a0validate that our Solr instance is running. The specifics of solr admin tool is beyond the scope of the example.<\/p>\n<p><code>http:\/\/localhost:8983\/solr\/<\/code><\/p>\n<p><figure id=\"attachment_22447\" aria-describedby=\"caption-attachment-22447\" style=\"width: 695px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_admin_console1.jpg\"><img decoding=\"async\" class=\"size-full wp-image-22447\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_admin_console1.jpg\" alt=\"Solr admin console\" width=\"695\" height=\"491\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_admin_console1.jpg 695w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_admin_console1-300x212.jpg 300w\" sizes=\"(max-width: 695px) 100vw, 695px\" \/><\/a><figcaption id=\"caption-attachment-22447\" class=\"wp-caption-text\">Solr admin console<\/figcaption><\/figure><\/p>\n<h2>2. Configuring Apache Solr<\/h2>\n<p>In this section,\u00a0we will show you how to configure the core\/collection for a solr instance and how to define the fields. Apache Solr ships with an option called Schemaless mode. This option allow users to construct effective schema without manually editing the schema file. But for this example we will use the Schema configuration for understanding the internals of the Solr.<\/p>\n<h3>2.1 Creating a\u00a0Core<\/h3>\n<p>When the Solr server is started\u00a0in Standalone mode, the configuration is called core and when it is started\u00a0in SolrCloud mode, the configuration is called Collection. In this example we will discuss about the standalone server and core. We will park the SolrCloud discussion for later time.<\/p>\n<p>First, we need to create a Core\u00a0for indexing the data.\u00a0The Solr create command has the following options:<\/p>\n<ul>\n<li><strong>-c &lt;name&gt;<\/strong> \u2013\u00a0Name of the core or collection to create (required).<\/li>\n<li><strong>-d &lt;confdir&gt;<\/strong> \u2013\u00a0The configuration directory, useful in the SolrCloud mode.<\/li>\n<li><strong>-n &lt;configName&gt;<\/strong> \u2013\u00a0The configuration name. This defaults to the same name as the core or\u00a0collection.<\/li>\n<li><strong>-p &lt;port&gt;<\/strong> \u2013\u00a0Port of a local Solr instance to send the create command to; by default\u00a0the script tries to detect the port by looking for running Solr instances.<\/li>\n<li><strong>-s &lt;shards&gt;<\/strong> \u2013\u00a0Number of shards to split a collection into, default is 1.<\/li>\n<li><strong>-rf &lt;replicas&gt;<\/strong> \u2013\u00a0Number of copies of each document in the collection. The default is 1.<\/li>\n<\/ul>\n<p>In this example we will use the -c parameter for core name and -d parameter for the configuration directory. For all other parameters we\u00a0make use of default settings.<\/p>\n<p>Now navigate the\u00a0<code>solr-5.0.0\\bin<\/code> folder in the command window and issue the following command:<\/p>\n<p><code>solr create -c jcg -d basic_configs<\/code><\/p>\n<p>We can see the following output in the command window.<\/p>\n<div>\n<div id=\"highlighter_317742\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">Creating new core <\/code><code class=\"bash string\">'jcg'<\/code> <code class=\"bash plain\">using <\/code><code class=\"bash functions\">command<\/code><code class=\"bash plain\">:<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">http:<\/code><code class=\"bash plain\">\/\/localhost<\/code><code class=\"bash plain\">:8983<\/code><code class=\"bash plain\">\/solr\/admin\/cores<\/code><code class=\"bash plain\">?action=CREATE&amp;name=jcg&amp;instanceDir=jcg<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">{<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash string\">\"responseHeader\"<\/code><code class=\"bash plain\">:{<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash string\">\"status\"<\/code><code class=\"bash plain\">:0,<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash string\">\"QTime\"<\/code><code class=\"bash plain\">:663},<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash string\">\"core\"<\/code><code class=\"bash plain\">:<\/code><code class=\"bash string\">\"jcg\"<\/code><code class=\"bash plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Now we navigate to the following URL and we\u00a0can see jcg core being populated in the core selector. You can also see\u00a0the statistics of the core.<\/p>\n<p><code>http:\/\/localhost:8983\/solr<\/code><\/p>\n<p><figure id=\"attachment_22448\" aria-describedby=\"caption-attachment-22448\" style=\"width: 695px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_jcg_core.jpg\"><img decoding=\"async\" class=\"size-full wp-image-22448\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_jcg_core.jpg\" alt=\"Solr jcg core\" width=\"695\" height=\"492\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_jcg_core.jpg 695w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/04\/solr_jcg_core-300x212.jpg 300w\" sizes=\"(max-width: 695px) 100vw, 695px\" \/><\/a><figcaption id=\"caption-attachment-22448\" class=\"wp-caption-text\">Solr jcg core<\/figcaption><\/figure><div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<h3>2.2\u00a0Modify the schema.xml file<\/h3>\n<p>We need to modify\u00a0the <code>schema.xml<\/code> file under the folder <code>server\\solr\\jcg\\conf<\/code> to include the fields. We will use the example files &#8220;vidcard.xml&#8221; and &#8220;manufacturers.xml&#8221;\u00a0shipped along with Solr installation for indexing. These file are\u00a0located under the folder\u00a0<code>solr-5.0.0\\example\\exampledocs.<\/code><\/p>\n<p>Now we navigate to the folder\u00a0<code>server\\solr<\/code> directory. You will see a folder called <code>jcg<\/code> created. The sub-folders namely\u00a0<code>conf<\/code> and <code>data<\/code> have the core\u2019s configuration and indexed data respectively.<\/p>\n<p>Now edit the <code>schema.xml<\/code> file in the <code>\\server\\solr\\jcg\\conf<\/code> folder and add the following contents after the uniqueKey element.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>schema.xml<\/em><\/span><\/p>\n<div>\n<div id=\"highlighter_999099\" class=\"syntaxhighlighter  xml\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">01<\/div>\n<div class=\"line number2 index1 alt1\">02<\/div>\n<div class=\"line number3 index2 alt2\">03<\/div>\n<div class=\"line number4 index3 alt1\">04<\/div>\n<div class=\"line number5 index4 alt2\">05<\/div>\n<div class=\"line number6 index5 alt1\">06<\/div>\n<div class=\"line number7 index6 alt2\">07<\/div>\n<div class=\"line number8 index7 alt1\">08<\/div>\n<div class=\"line number9 index8 alt2\">09<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">uniqueKey<\/code><code class=\"xml plain\">&gt;id&lt;\/<\/code><code class=\"xml keyword\">uniqueKey<\/code><code class=\"xml plain\">&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"name\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"text_general\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"manu\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"text_general\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"manu_id_s\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"text_general\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"cat\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"text_general\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">multiValued<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"features\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"text_general\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">multiValued<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"weight\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"tdouble\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"price\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"tdouble\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"popularity\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"tdouble\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"store\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"text_general\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"inStock\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"boolean\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">field<\/code> <code class=\"xml color1\">name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"manufacturedate_dt\"<\/code> <code class=\"xml color1\">type<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"text_general\"<\/code> <code class=\"xml color1\">indexed<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml color1\">stored<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>We have set the attribute <code>indexed<\/code> to true. This specifies\u00a0the field is used for indexing and the record can be retrieved using the index. Setting the value to false will make the field only stored but can\u2019t be queried with.[ulp id=&#8217;nVHijykNs8bcCQYH&#8217;]<\/p>\n<p>Also note we have another attribute called <code>stored<\/code> and set it to true. This specifies the field is stored and can be returned in the output. Setting this field to false will make the field only indexed and can\u2019t be retrieved\u00a0in output.<\/p>\n<p>Since we have modified the configuration we have to stop and start the server. To do so, we need to issue the following command from bin directory through command line:<\/p>\n<p><code>solr stop -all<\/code><\/p>\n<p>The server will be stopped now. Now to start the server issue the following command from bin directory through command line:<\/p>\n<p><code>solr start<\/code><\/p>\n<h2>3.\u00a0Indexing the Data<\/h2>\n<p>Apache Solr comes with a Standalone Java program called the\u00a0SimplePostTool. This program\u00a0is packaged into JAR and available with the installation under the folder\u00a0<code>example\\exampledocs<\/code>.<\/p>\n<p>Now we navigate to the <code>example\\exampledocs<\/code> folder in the command prompt and type the following command. You will see a bunch of options to use the tool.<\/p>\n<p><code>java -jar post.jar -h<\/code><\/p>\n<p>The usage format in general is as follows:<\/p>\n<p><code>Usage: java [SystemProperties] -jar post.jar [-h|-] [&lt;file|folder|url|arg&gt;<br \/>\n[&lt;file|folder|url|arg&gt;...]]<\/code><\/p>\n<p>As we said earlier, we will index the data present in &#8220;vidcard.xml&#8221; \u00a0and &#8220;manufacturers.xml&#8221; files shipped with Solr installation. We will navigate to the\u00a0<code>solr-5.0.0\\example\\exampledocs<\/code> in the command prompt and issue the following command.<\/p>\n<p><code>java -Dtype=application\/xml -Durl=http:\/\/localhost:8983\/solr\/jcg\/update -jar post.jar \u00a0vidcard.xml<\/code><\/p>\n<p>The SystemProperties used\u00a0here are:<\/p>\n<ul>\n<li>-Dtype \u2013 the type of the data file.<\/li>\n<li>-Durl \u2013\u00a0URL for the jcg core.<\/li>\n<\/ul>\n<p>The file &#8220;vidcard.xml&#8221; will now be indexed and the command prompt will display the following output.<\/p>\n<div>\n<div id=\"highlighter_591505\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">SimplePostTool version 5.0.0<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Posting files to [base] url http:<\/code><code class=\"bash plain\">\/\/localhost<\/code><code class=\"bash plain\">:8983<\/code><code class=\"bash plain\">\/solr\/jcg\/update<\/code> <code class=\"bash plain\">using content-<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash functions\">type<\/code> <code class=\"bash plain\">application<\/code><code class=\"bash plain\">\/xml<\/code><code class=\"bash plain\">...<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">POSTing <\/code><code class=\"bash functions\">file<\/code> <code class=\"bash plain\">vidcard.xml to [base]<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">1 files indexed.<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">COMMITting Solr index changes to http:<\/code><code class=\"bash plain\">\/\/localhost<\/code><code class=\"bash plain\">:8983<\/code><code class=\"bash plain\">\/solr\/jcg\/update<\/code><code class=\"bash plain\">...<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">Time spent: 0:00:00.523<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Now we will create\u00a0the index for documents present in &#8220;manufacturers.xml&#8221; file using the following command:<\/p>\n<p><code>java -Dtype=application\/xml -Durl=http:\/\/localhost:8983\/solr\/jcg\/update -jar post.jar \u00a0manufacturers.xml<\/code><\/p>\n<p>The file &#8220;manufacturers.xml&#8221; will now be indexed and the command prompt will display the following output:<\/p>\n<div>\n<div id=\"highlighter_123334\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">SimplePostTool version 5.0.0<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Posting files to [base] url http:<\/code><code class=\"bash plain\">\/\/localhost<\/code><code class=\"bash plain\">:8983<\/code><code class=\"bash plain\">\/solr\/jcg\/update<\/code> <code class=\"bash plain\">using content-<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash functions\">type<\/code> <code class=\"bash plain\">application<\/code><code class=\"bash plain\">\/xml<\/code><code class=\"bash plain\">...<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">POSTing <\/code><code class=\"bash functions\">file<\/code> <code class=\"bash plain\">manufacturers.xml to [base]<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">1 files indexed.<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">COMMITting Solr index changes to http:<\/code><code class=\"bash plain\">\/\/localhost<\/code><code class=\"bash plain\">:8983<\/code><code class=\"bash plain\">\/solr\/jcg\/update<\/code><code class=\"bash plain\">...<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">Time spent: 0:00:00.143<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2>4.\u00a0Query using join<\/h2>\n<p>Now, we will make a join Query to find out the details of <code>graphics card<\/code> manufacturers. To do so, we need to\u00a0use\u00a0the join QueryParser(Plugin) which is specified by the <code>{!join}<\/code> syntax. The\u00a0Joins are processed using Solr&#8217;s LocalParam\u00a0syntax.<br \/>\nYou can observe\u00a0that Joins in Solr are not really equivalent to SQL Joins, because no information about the table being joined &#8220;from&#8221; is carried forward into the final result.\u00a0The joins in Solr are more closely associated with the &#8220;inner query&#8221; of the SQL.<\/p>\n<p>The following join Query will find all the documents with category &#8220;graphics card&#8221; and\u00a0then join them against (manufacturer) docs and return the list of manufacturers that make those products.<\/p>\n<p><code>http:\/\/localhost:8983\/solr\/jcg\/select?q={!join+from=manu_id_s+to=id}cat:\"graphics card\"<\/code><\/p>\n<p><figure id=\"attachment_28047\" aria-describedby=\"caption-attachment-28047\" style=\"width: 710px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/10\/solrjoin_output1.jpg\"><img decoding=\"async\" class=\"size-full wp-image-28047\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/10\/solrjoin_output1.jpg\" alt=\"solrjoin_output\" width=\"710\" height=\"640\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/10\/solrjoin_output1.jpg 710w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/10\/solrjoin_output1-300x270.jpg 300w\" sizes=\"(max-width: 710px) 100vw, 710px\" \/><\/a><figcaption id=\"caption-attachment-28047\" class=\"wp-caption-text\">Solr Join Output<\/figcaption><\/figure><\/p>\n<h2>5.\u00a0Download the\u00a0configuration<\/h2>\n<p>This was an example of Solr joins.<\/p>\n<div class=\"download\"><strong>Download<\/strong><br \/>\nYou can download configuration file here:\u00a0<a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/10\/solrjoin_schema.zip\"><strong>schema.xml<\/strong><\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this example of Solr Join, we will discuss about how to implement join between documents in Apache Solr. We will show you how to implement the Join Query Parser plugin specified by {!join}. The join is used in Solr documents where de-normalizing the data is time consuming or costly. To demonstrate the Solr Join\u00a0usage, &hellip;<\/p>\n","protected":false},"author":45,"featured_media":25294,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[949],"tags":[946,1230],"class_list":["post-28019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apache-solr","tag-apache-solr","tag-solr-join"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Solr Join Example - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"In this example of Solr Join, we will discuss about how to implement join between documents in Apache Solr. We will show you how to implement the Join\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Solr Join Example - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"In this example of Solr Join, we will discuss about how to implement join between documents in Apache Solr. We will show you how to implement the Join\" \/>\n<meta property=\"og:url\" content=\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/\" \/>\n<meta property=\"og:site_name\" content=\"Examples Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-21T08:00:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-08-08T13:11:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Veeramani Kalyanasundaram\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Veeramani Kalyanasundaram\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/\"},\"author\":{\"name\":\"Veeramani Kalyanasundaram\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/5071d015679129b94b45f5a51e9e9ea5\"},\"headline\":\"Solr Join Example\",\"datePublished\":\"2015-10-21T08:00:05+00:00\",\"dateModified\":\"2020-08-08T13:11:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/\"},\"wordCount\":1239,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg\",\"keywords\":[\"Apache Solr\",\"solr join\"],\"articleSection\":[\"Apache Solr\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/\",\"name\":\"Solr Join Example - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg\",\"datePublished\":\"2015-10-21T08:00:05+00:00\",\"dateModified\":\"2020-08-08T13:11:46+00:00\",\"description\":\"In this example of Solr Join, we will discuss about how to implement join between documents in Apache Solr. We will show you how to implement the Join\",\"breadcrumb\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#primaryimage\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/examples.javacodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Development\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Apache Solr\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/apache-solr\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Solr Join Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Examples and Code Snippets\",\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/javacodegeeks\",\"https:\/\/x.com\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/5071d015679129b94b45f5a51e9e9ea5\",\"name\":\"Veeramani Kalyanasundaram\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/01\/Veeramani-Kalyanasundaram-96x96.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/01\/Veeramani-Kalyanasundaram-96x96.jpg\",\"caption\":\"Veeramani Kalyanasundaram\"},\"description\":\"Veera is a Software Architect working in telecom domain with rich experience in Java Middleware Technologies. He is a OOAD practitioner and interested in Performance Engineering.\",\"sameAs\":[\"http:\/\/www.javacodegeeks.com\/\"],\"url\":\"https:\/\/examples.javacodegeeks.com\/author\/veeramani-kalyanasundaram\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Solr Join Example - Java Code Geeks","description":"In this example of Solr Join, we will discuss about how to implement join between documents in Apache Solr. We will show you how to implement the Join","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/","og_locale":"en_US","og_type":"article","og_title":"Solr Join Example - Java Code Geeks","og_description":"In this example of Solr Join, we will discuss about how to implement join between documents in Apache Solr. We will show you how to implement the Join","og_url":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/","og_site_name":"Examples Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2015-10-21T08:00:05+00:00","article_modified_time":"2020-08-08T13:11:46+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg","type":"image\/jpeg"}],"author":"Veeramani Kalyanasundaram","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Veeramani Kalyanasundaram","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#article","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/"},"author":{"name":"Veeramani Kalyanasundaram","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/5071d015679129b94b45f5a51e9e9ea5"},"headline":"Solr Join Example","datePublished":"2015-10-21T08:00:05+00:00","dateModified":"2020-08-08T13:11:46+00:00","mainEntityOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/"},"wordCount":1239,"commentCount":0,"publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg","keywords":["Apache Solr","solr join"],"articleSection":["Apache Solr"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/","url":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/","name":"Solr Join Example - Java Code Geeks","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#primaryimage"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg","datePublished":"2015-10-21T08:00:05+00:00","dateModified":"2020-08-08T13:11:46+00:00","description":"In this example of Solr Join, we will discuss about how to implement join between documents in Apache Solr. We will show you how to implement the Join","breadcrumb":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#primaryimage","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/07\/apache-solr-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/apache-solr\/solr-join-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/examples.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java Development","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/"},{"@type":"ListItem","position":4,"name":"Apache Solr","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/apache-solr\/"},{"@type":"ListItem","position":5,"name":"Solr Join Example"}]},{"@type":"WebSite","@id":"https:\/\/examples.javacodegeeks.com\/#website","url":"https:\/\/examples.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Examples and Code Snippets","publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/examples.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/examples.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/5071d015679129b94b45f5a51e9e9ea5","name":"Veeramani Kalyanasundaram","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/01\/Veeramani-Kalyanasundaram-96x96.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/01\/Veeramani-Kalyanasundaram-96x96.jpg","caption":"Veeramani Kalyanasundaram"},"description":"Veera is a Software Architect working in telecom domain with rich experience in Java Middleware Technologies. He is a OOAD practitioner and interested in Performance Engineering.","sameAs":["http:\/\/www.javacodegeeks.com\/"],"url":"https:\/\/examples.javacodegeeks.com\/author\/veeramani-kalyanasundaram\/"}]}},"_links":{"self":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/28019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/users\/45"}],"replies":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=28019"}],"version-history":[{"count":0,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/28019\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media\/25294"}],"wp:attachment":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=28019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=28019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=28019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}