{"id":758,"date":"2020-03-24T09:54:32","date_gmt":"2020-03-24T09:54:32","guid":{"rendered":"https:\/\/www.aeologic.com\/blog\/?p=758"},"modified":"2020-03-24T11:53:03","modified_gmt":"2020-03-24T11:53:03","slug":"all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide","status":"publish","type":"post","link":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/","title":{"rendered":"All About Indexing and Basic Data Operations &#8211; Part 5 &#8211; Ultimate Solr Guide"},"content":{"rendered":"<p>Hello All, Today I&#8217;m here with another post to discuss another important aspect with respect to indexing operations in Solr. Invariably we encounter scenarios where we need to index data in a language of a different origin or more so, we need to index data of multiple languages. The dynamics to fulfil this requirement is of immense importance for any business given the gravity of the need. Solr helps to index the languages of different origins by having a language detection mechanism built for the same.<\/p>\n<p>Essentially, Solr can identify languages and map text to language-specific fields during indexing using the\u00a0<code>langid<\/code>\u00a0UpdateRequestProcessor.<\/p>\n<p>Solr supports three implementations of this feature:<\/p>\n<ul>\n<li>Tika\u2019s language detection feature:\u00a0<a class=\"bare\" href=\"https:\/\/tika.apache.org\/1.17\/detection.html\">https:\/\/tika.apache.org\/1.17\/detection.html<\/a><\/li>\n<li>LangDetect language detection:\u00a0<a class=\"bare\" href=\"https:\/\/github.com\/shuyo\/language-detection\">https:\/\/github.com\/shuyo\/language-detection<\/a><\/li>\n<li>OpenNLP language detection:\u00a0<a class=\"bare\" href=\"http:\/\/opennlp.apache.org\/docs\/1.8.3\/manual\/opennlp.html#tools.langdetect\">http:\/\/opennlp.apache.org\/docs\/1.8.3\/manual\/opennlp.html#tools.langdetect<\/a><\/li>\n<\/ul>\n<p>You can see a comparison between the Tika and LangDetect implementations here:\u00a0<a class=\"bare\" href=\"http:\/\/blog.mikemccandless.com\/2011\/10\/accuracy-and-performance-of-googles.html\">http:\/\/blog.mikemccandless.com\/2011\/10\/accuracy-and-performance-of-googles.html<\/a>. In general, the LangDetect implementation supports more languages with higher performance.<\/p>\n<h2 id=\"configuring-language-detection\" class=\"clickable-header top-level-header\">Configuring Language Detection<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>You can configure the\u00a0<code>langid<\/code>\u00a0UpdateRequestProcessor in\u00a0<code>solrconfig.xml<\/code>. Both implementations take the same parameters, which are described in the following section. At a minimum, you must specify the fields for language identification and a field for the resulting language code.<\/p>\n<h3 id=\"configuring-tika-language-detection\" class=\"clickable-header\">Configuring Tika Language Detection<\/h3>\n<div class=\"paragraph\">\n<p>Here is an example of a minimal Tika\u00a0<code>langid<\/code>\u00a0configuration in\u00a0<code>solrconfig.xml<\/code>:<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-759\" src=\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95.png\" alt=\"\" width=\"1936\" height=\"590\" srcset=\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95.png 1936w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95-300x91.png 300w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95-768x234.png 768w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95-1024x312.png 1024w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95-720x219.png 720w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95-1180x360.png 1180w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95-260x79.png 260w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95-263x80.png 263w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-95-250x76.png 250w\" sizes=\"(max-width: 1936px) 100vw, 1936px\" \/><\/p>\n<h3 id=\"configuring-langdetect-language-detection\" class=\"clickable-header\">Configuring LangDetect Language Detection<\/h3>\n<div class=\"paragraph\">\n<p>Here is an example of a minimal LangDetect\u00a0<code>langid<\/code>\u00a0configuration in\u00a0<code>solrconfig.xml<\/code>:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-760\" src=\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96.png\" alt=\"\" width=\"2036\" height=\"590\" srcset=\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96.png 2036w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96-300x87.png 300w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96-768x223.png 768w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96-1024x297.png 1024w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96-720x209.png 720w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96-1180x342.png 1180w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96-260x75.png 260w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96-276x80.png 276w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-96-250x72.png 250w\" sizes=\"(max-width: 2036px) 100vw, 2036px\" \/><\/p>\n<h3 id=\"configuring-opennlp-language-detection\" class=\"clickable-header\">Configuring OpenNLP Language Detection<\/h3>\n<div class=\"paragraph\">\n<p>Here is an example of a minimal OpenNLP\u00a0<code>langid<\/code>\u00a0configuration in\u00a0<code>solrconfig.xml<\/code>:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-761\" src=\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97.png\" alt=\"\" width=\"1852\" height=\"626\" srcset=\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97.png 1852w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97-300x101.png 300w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97-768x260.png 768w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97-1024x346.png 1024w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97-720x243.png 720w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97-1180x399.png 1180w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97-260x88.png 260w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97-237x80.png 237w, https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/03\/carbon-97-250x85.png 250w\" sizes=\"(max-width: 1852px) 100vw, 1852px\" \/><\/p>\n<h2 id=\"langid-parameters\" class=\"clickable-header top-level-header\">langid Parameters<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>As previously mentioned, both implementations of the\u00a0<code>langid<\/code>\u00a0UpdateRequestProcessor take the same parameters.<\/p>\n<\/div>\n<div class=\"dlist\">\n<dl>\n<dt class=\"hdlist1\"><code>langid<\/code><\/dt>\n<dd>When\u00a0<code>true<\/code>, the default, enables language detection.<\/dd>\n<dt class=\"hdlist1\"><code>langid.fl<\/code><\/dt>\n<dd>A comma- or space-delimited list of fields to be processed by\u00a0<code>langid<\/code>. This parameter is required.<\/dd>\n<dt class=\"hdlist1\"><code>langid.langField<\/code><\/dt>\n<dd>Specifies the field for the returned language code. This parameter is required.<\/dd>\n<dt class=\"hdlist1\"><code>langid.langsField<\/code><\/dt>\n<dd>Specifies the field for a list of returned language codes. If you use\u00a0<code>langid.map.individual<\/code>, each detected language will be added to this field.<\/dd>\n<dt class=\"hdlist1\"><code>langid.overwrite<\/code><\/dt>\n<dd>Specifies whether the content of the\u00a0<code>langField<\/code>\u00a0and\u00a0<code>langsField<\/code>\u00a0fields will be overwritten if they already contain values. The default is\u00a0<code>false<\/code>.<\/dd>\n<dt class=\"hdlist1\"><code>langid.lcmap<\/code><\/dt>\n<dd>A space-separated list specifying colon delimited language code mappings to apply to the detected languages.<\/p>\n<div class=\"paragraph\">\n<p>For example, you might use this to map Chinese, Japanese, and Korean to a common\u00a0<code>cjk<\/code>\u00a0code, and map both American and British English to a single\u00a0<code>en<\/code>\u00a0code by using\u00a0<code>langid.lcmap=ja:cjk zh:cjk ko:cjk en_GB:en en_US:en<\/code>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>This affects both the values put into the\u00a0<code>langField<\/code>\u00a0and\u00a0<code>langsField<\/code>\u00a0fields, as well as the field suffixes when using\u00a0<code>langid.map<\/code>, unless overridden by\u00a0<code>langid.map.lcmap<\/code>.<\/p>\n<\/div>\n<\/dd>\n<dt class=\"hdlist1\"><code>langid.threshold<\/code><\/dt>\n<dd>Specifies a threshold value between 0 and 1 that the language identification score must reach before\u00a0<code>langid<\/code>\u00a0accepts it.<\/p>\n<div class=\"paragraph\">\n<p>With longer text fields, a high threshold such as\u00a0<code>0.8<\/code>\u00a0will give good results. For shorter text fields, you may need to lower the threshold for language identification, though you will be risking somewhat lower quality results. We recommend experimenting with your data to tune your results.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>The default is\u00a0<code>0.5<\/code>.<\/p>\n<\/div>\n<\/dd>\n<dt class=\"hdlist1\"><code>langid.whitelist<\/code><\/dt>\n<dd>Specifies a list of allowed language identification codes. Use this in combination with\u00a0<code>langid.map<\/code>\u00a0to ensure that you only index documents into fields that are in your schema.<\/dd>\n<dt class=\"hdlist1\"><code>langid.map<\/code><\/dt>\n<dd>Enables field name mapping. If\u00a0<code>true<\/code>, Solr will map field names for all fields listed in\u00a0<code>langid.fl<\/code>. The default is\u00a0<code>false<\/code>.<\/dd>\n<dt class=\"hdlist1\"><code>langid.map.fl<\/code><\/dt>\n<dd>A comma-separated list of fields for\u00a0<code>langid.map<\/code>\u00a0that is different than the fields specified in\u00a0<code>langid.fl<\/code>.<\/dd>\n<dt class=\"hdlist1\"><code>langid.map.keepOrig<\/code><\/dt>\n<dd>If\u00a0<code>true<\/code>, Solr will copy the field during the field name mapping process, leaving the original field in place. The default is\u00a0<code>false<\/code>.<\/dd>\n<dt class=\"hdlist1\"><code>langid.map.individual<\/code><\/dt>\n<dd>If\u00a0<code>true<\/code>, Solr will detect and map languages for each field individually. The default is\u00a0<code>false<\/code>.<\/dd>\n<dt class=\"hdlist1\"><code>langid.map.individual.fl<\/code><\/dt>\n<dd>A comma-separated list of fields for use with\u00a0<code>langid.map.individual<\/code>\u00a0that is different than the fields specified in\u00a0<code>langid.fl<\/code>.<\/dd>\n<dt class=\"hdlist1\"><code>langid.fallback<\/code><\/dt>\n<dd>Specifies a language code to use if no language is detected or specified in\u00a0<code>langid.fallbackFields<\/code>.<\/dd>\n<dt class=\"hdlist1\"><code>langid.fallbackFields<\/code><\/dt>\n<dd>If no language is detected that meets the\u00a0<code>langid.threshold<\/code>\u00a0score, or if the detected language is not on the\u00a0<code>langid.whitelist<\/code>, this field specifies language codes to be used as fallback values.<\/p>\n<div class=\"paragraph\">\n<p>If no appropriate fallback languages are found, Solr will use the language code specified in\u00a0<code>langid.fallback<\/code>.<\/p>\n<\/div>\n<\/dd>\n<dt class=\"hdlist1\"><code>langid.map.lcmap<\/code><\/dt>\n<dd>A space-separated list specifying colon-delimited language code mappings to use when mapping field names.<\/p>\n<div class=\"paragraph\">\n<p>For example, you might use this to make Chinese, Japanese, and Korean language fields use a common\u00a0<code>*_cjk<\/code>\u00a0suffix, and map both American and British English fields to a single\u00a0<code>*_en<\/code>\u00a0by using\u00a0<code>langid.map.lcmap=ja:cjk zh:cjk ko:cjk en_GB:en en_US:en<\/code>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>A list defined with this parameter will override any configuration set with\u00a0<code>langid.lcmap<\/code>.<\/p>\n<\/div>\n<\/dd>\n<dt class=\"hdlist1\"><code>langid.map.pattern<\/code><\/dt>\n<dd>By default, fields are mapped as &lt;field&gt;_&lt;language&gt;. To change this pattern, you can specify a Java regular expression in this parameter.<\/dd>\n<dt class=\"hdlist1\"><code>langid.map.replace<\/code><\/dt>\n<dd>By default, fields are mapped as\u00a0<code>&lt;field&gt;_&lt;language&gt;<\/code>. To change this pattern, you can specify a Java replace in this parameter.<\/dd>\n<dt class=\"hdlist1\"><code>langid.enforceSchema<\/code><\/dt>\n<dd>If\u00a0<code>false<\/code>, the\u00a0<code>langid<\/code>\u00a0processor does not validate field names against your schema. This may be useful if you plan to rename or delete fields later in the UpdateChain.<\/p>\n<div class=\"paragraph\">\n<p>The default is\u00a0<code>true<\/code>.<\/p>\n<\/div>\n<\/dd>\n<\/dl>\n<p>So, this is it on language detection in Solr. Stay tuned for another post about &#8220;Language Analysis&#8221; in Solr.<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hello All, Today I&#8217;m here with another post to discuss another important aspect with respect to indexing operations in Solr. Invariably we encounter scenarios where we need to index data in a language of a different origin or more so, we need to index data of multiple languages. The dynamics to fulfil this requirement is of immense importance for any business given the gravity of the need. Solr helps to index the languages of different origins by having a language detection mechanism built for the same. Essentially, Solr can identify languages and map text to language-specific fields during indexing using the\u00a0langid\u00a0UpdateRequestProcessor. Solr supports three implementations of this feature: Tika\u2019s language detection feature:\u00a0https:\/\/tika.apache.org\/1.17\/detection.html LangDetect language detection:\u00a0https:\/\/github.com\/shuyo\/language-detection OpenNLP language detection:\u00a0http:\/\/opennlp.apache.org\/docs\/1.8.3\/manual\/opennlp.html#tools.langdetect You can see a comparison between the Tika and LangDetect implementations here:\u00a0http:\/\/blog.mikemccandless.com\/2011\/10\/accuracy-and-performance-of-googles.html. In general, the LangDetect implementation supports more languages with higher performance. Configuring Language Detection You can configure the\u00a0langid\u00a0UpdateRequestProcessor in\u00a0solrconfig.xml. Both implementations take the same parameters, which are described in the following section. At a minimum, you must specify the fields for language identification and a field for the resulting language code. Configuring Tika Language Detection Here is an example of a minimal Tika\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: Configuring LangDetect Language Detection Here is an example of a minimal LangDetect\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: Configuring OpenNLP Language Detection Here is an example of a minimal OpenNLP\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: langid Parameters As previously mentioned, both implementations of the\u00a0langid\u00a0UpdateRequestProcessor take the same parameters. langid When\u00a0true, the default, enables language detection. langid.fl A comma- or space-delimited list of fields to be processed by\u00a0langid. This parameter is required. langid.langField Specifies the field for the returned language code. This parameter is required. langid.langsField Specifies the field for a list of returned language codes. If you use\u00a0langid.map.individual, each detected language will be added to this field. langid.overwrite Specifies whether the content of the\u00a0langField\u00a0and\u00a0langsField\u00a0fields will be overwritten if they already contain values. The default is\u00a0false. langid.lcmap A space-separated list specifying colon delimited language code mappings to apply to the detected languages. For example, you might use this to map Chinese, Japanese, and Korean to a common\u00a0cjk\u00a0code, and map both American and British English to a single\u00a0en\u00a0code by using\u00a0langid.lcmap=ja:cjk zh:cjk ko:cjk en_GB:en en_US:en. This affects both the values put into the\u00a0langField\u00a0and\u00a0langsField\u00a0fields, as well as the field suffixes when using\u00a0langid.map, unless overridden by\u00a0langid.map.lcmap. langid.threshold Specifies a threshold value between 0 and 1 that the language identification score must reach before\u00a0langid\u00a0accepts it. With longer text fields, a high threshold such as\u00a00.8\u00a0will give good results. For shorter text fields, you may need to lower the threshold for language identification, though you will be risking somewhat lower quality results. We recommend experimenting with your data to tune your results. The default is\u00a00.5. langid.whitelist Specifies a list of allowed language identification codes. Use this in combination with\u00a0langid.map\u00a0to ensure that you only index documents into fields that are in your schema. langid.map Enables field name mapping. If\u00a0true, Solr will map field names for all fields listed in\u00a0langid.fl. The default is\u00a0false. langid.map.fl A comma-separated list of fields for\u00a0langid.map\u00a0that is different than the fields specified in\u00a0langid.fl. langid.map.keepOrig If\u00a0true, Solr will copy the field during the field name mapping process, leaving the original field in place. The default is\u00a0false. langid.map.individual If\u00a0true, Solr will detect and map languages for each field individually. The default is\u00a0false. langid.map.individual.fl A comma-separated list of fields for use with\u00a0langid.map.individual\u00a0that is different than the fields specified in\u00a0langid.fl. langid.fallback Specifies a language code to use if no language is detected or specified in\u00a0langid.fallbackFields. langid.fallbackFields If no language is detected that meets the\u00a0langid.threshold\u00a0score, or if the detected language is not on the\u00a0langid.whitelist, this field specifies language codes to be used as fallback values. If no appropriate fallback languages are found, Solr will use the language code specified in\u00a0langid.fallback. langid.map.lcmap A space-separated list specifying colon-delimited language code mappings to use when mapping field names. For example, you might use this to make Chinese, Japanese, and Korean language fields use a common\u00a0*_cjk\u00a0suffix, and map both American and British English fields to a single\u00a0*_en\u00a0by using\u00a0langid.map.lcmap=ja:cjk zh:cjk ko:cjk en_GB:en en_US:en. A list defined with this parameter will override any configuration set with\u00a0langid.lcmap. langid.map.pattern By default, fields are mapped as &lt;field&gt;_&lt;language&gt;. To change this pattern, you can specify a Java regular expression in this parameter. langid.map.replace By default, fields are mapped as\u00a0&lt;field&gt;_&lt;language&gt;. To change this pattern, you can specify a Java replace in this parameter. langid.enforceSchema If\u00a0false, the\u00a0langid\u00a0processor does not validate field names against your schema. This may be useful if you plan to rename or delete fields later in the UpdateChain. The default is\u00a0true. So, this is it on language detection in Solr. Stay tuned for another post about &#8220;Language Analysis&#8221; in Solr.<\/p>\n","protected":false},"author":3,"featured_media":635,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41],"tags":[102],"class_list":["post-758","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-solr","tag-language-detection-solr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>All About Indexing and Basic Data Operations - Part 5 - Ultimate Solr Guide - Aeologic Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"All About Indexing and Basic Data Operations - Part 5 - Ultimate Solr Guide - Aeologic Blog\" \/>\n<meta property=\"og:description\" content=\"Hello All, Today I&#8217;m here with another post to discuss another important aspect with respect to indexing operations in Solr. Invariably we encounter scenarios where we need to index data in a language of a different origin or more so, we need to index data of multiple languages. The dynamics to fulfil this requirement is of immense importance for any business given the gravity of the need. Solr helps to index the languages of different origins by having a language detection mechanism built for the same. Essentially, Solr can identify languages and map text to language-specific fields during indexing using the\u00a0langid\u00a0UpdateRequestProcessor. Solr supports three implementations of this feature: Tika\u2019s language detection feature:\u00a0https:\/\/tika.apache.org\/1.17\/detection.html LangDetect language detection:\u00a0https:\/\/github.com\/shuyo\/language-detection OpenNLP language detection:\u00a0http:\/\/opennlp.apache.org\/docs\/1.8.3\/manual\/opennlp.html#tools.langdetect You can see a comparison between the Tika and LangDetect implementations here:\u00a0http:\/\/blog.mikemccandless.com\/2011\/10\/accuracy-and-performance-of-googles.html. In general, the LangDetect implementation supports more languages with higher performance. Configuring Language Detection You can configure the\u00a0langid\u00a0UpdateRequestProcessor in\u00a0solrconfig.xml. Both implementations take the same parameters, which are described in the following section. At a minimum, you must specify the fields for language identification and a field for the resulting language code. Configuring Tika Language Detection Here is an example of a minimal Tika\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: Configuring LangDetect Language Detection Here is an example of a minimal LangDetect\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: Configuring OpenNLP Language Detection Here is an example of a minimal OpenNLP\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: langid Parameters As previously mentioned, both implementations of the\u00a0langid\u00a0UpdateRequestProcessor take the same parameters. langid When\u00a0true, the default, enables language detection. langid.fl A comma- or space-delimited list of fields to be processed by\u00a0langid. This parameter is required. langid.langField Specifies the field for the returned language code. This parameter is required. langid.langsField Specifies the field for a list of returned language codes. If you use\u00a0langid.map.individual, each detected language will be added to this field. langid.overwrite Specifies whether the content of the\u00a0langField\u00a0and\u00a0langsField\u00a0fields will be overwritten if they already contain values. The default is\u00a0false. langid.lcmap A space-separated list specifying colon delimited language code mappings to apply to the detected languages. For example, you might use this to map Chinese, Japanese, and Korean to a common\u00a0cjk\u00a0code, and map both American and British English to a single\u00a0en\u00a0code by using\u00a0langid.lcmap=ja:cjk zh:cjk ko:cjk en_GB:en en_US:en. This affects both the values put into the\u00a0langField\u00a0and\u00a0langsField\u00a0fields, as well as the field suffixes when using\u00a0langid.map, unless overridden by\u00a0langid.map.lcmap. langid.threshold Specifies a threshold value between 0 and 1 that the language identification score must reach before\u00a0langid\u00a0accepts it. With longer text fields, a high threshold such as\u00a00.8\u00a0will give good results. For shorter text fields, you may need to lower the threshold for language identification, though you will be risking somewhat lower quality results. We recommend experimenting with your data to tune your results. The default is\u00a00.5. langid.whitelist Specifies a list of allowed language identification codes. Use this in combination with\u00a0langid.map\u00a0to ensure that you only index documents into fields that are in your schema. langid.map Enables field name mapping. If\u00a0true, Solr will map field names for all fields listed in\u00a0langid.fl. The default is\u00a0false. langid.map.fl A comma-separated list of fields for\u00a0langid.map\u00a0that is different than the fields specified in\u00a0langid.fl. langid.map.keepOrig If\u00a0true, Solr will copy the field during the field name mapping process, leaving the original field in place. The default is\u00a0false. langid.map.individual If\u00a0true, Solr will detect and map languages for each field individually. The default is\u00a0false. langid.map.individual.fl A comma-separated list of fields for use with\u00a0langid.map.individual\u00a0that is different than the fields specified in\u00a0langid.fl. langid.fallback Specifies a language code to use if no language is detected or specified in\u00a0langid.fallbackFields. langid.fallbackFields If no language is detected that meets the\u00a0langid.threshold\u00a0score, or if the detected language is not on the\u00a0langid.whitelist, this field specifies language codes to be used as fallback values. If no appropriate fallback languages are found, Solr will use the language code specified in\u00a0langid.fallback. langid.map.lcmap A space-separated list specifying colon-delimited language code mappings to use when mapping field names. For example, you might use this to make Chinese, Japanese, and Korean language fields use a common\u00a0*_cjk\u00a0suffix, and map both American and British English fields to a single\u00a0*_en\u00a0by using\u00a0langid.map.lcmap=ja:cjk zh:cjk ko:cjk en_GB:en en_US:en. A list defined with this parameter will override any configuration set with\u00a0langid.lcmap. langid.map.pattern By default, fields are mapped as &lt;field&gt;_&lt;language&gt;. To change this pattern, you can specify a Java regular expression in this parameter. langid.map.replace By default, fields are mapped as\u00a0&lt;field&gt;_&lt;language&gt;. To change this pattern, you can specify a Java replace in this parameter. langid.enforceSchema If\u00a0false, the\u00a0langid\u00a0processor does not validate field names against your schema. This may be useful if you plan to rename or delete fields later in the UpdateChain. The default is\u00a0true. So, this is it on language detection in Solr. Stay tuned for another post about &#8220;Language Analysis&#8221; in Solr.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Aeologic Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/AeoLogicTech\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-24T09:54:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-24T11:53:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"622\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Manoj Kumar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@aeologictech\" \/>\n<meta name=\"twitter:site\" content=\"@aeologictech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manoj Kumar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/\"},\"author\":{\"name\":\"Manoj Kumar\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/#\/schema\/person\/13549984ba8e5f441cc733ed20d7daa4\"},\"headline\":\"All About Indexing and Basic Data Operations &#8211; Part 5 &#8211; Ultimate Solr Guide\",\"datePublished\":\"2020-03-24T09:54:32+00:00\",\"dateModified\":\"2020-03-24T11:53:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/\"},\"wordCount\":804,\"publisher\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png\",\"keywords\":[\"language detection solr\"],\"articleSection\":[\"Solr\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/\",\"url\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/\",\"name\":\"All About Indexing and Basic Data Operations - Part 5 - Ultimate Solr Guide - Aeologic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png\",\"datePublished\":\"2020-03-24T09:54:32+00:00\",\"dateModified\":\"2020-03-24T11:53:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#primaryimage\",\"url\":\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png\",\"contentUrl\":\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png\",\"width\":1080,\"height\":622},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.aeologic.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"All About Indexing and Basic Data Operations &#8211; Part 5 &#8211; Ultimate Solr Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/#website\",\"url\":\"https:\/\/www.aeologic.com\/blog\/\",\"name\":\"Aeologic Blog\",\"description\":\"Aeologic\",\"publisher\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.aeologic.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/#organization\",\"name\":\"AeoLogic Technologies\",\"url\":\"https:\/\/www.aeologic.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2022\/05\/new-logo-aeo.jpg\",\"contentUrl\":\"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2022\/05\/new-logo-aeo.jpg\",\"width\":385,\"height\":162,\"caption\":\"AeoLogic Technologies\"},\"image\":{\"@id\":\"https:\/\/www.aeologic.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/AeoLogicTech\/\",\"https:\/\/x.com\/aeologictech\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/#\/schema\/person\/13549984ba8e5f441cc733ed20d7daa4\",\"name\":\"Manoj Kumar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.aeologic.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/24ce77602da5eb5715d74a95733f6c7548e2af73f5a493f9bc0bf55f611d025e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/24ce77602da5eb5715d74a95733f6c7548e2af73f5a493f9bc0bf55f611d025e?s=96&d=mm&r=g\",\"caption\":\"Manoj Kumar\"},\"description\":\"Manoj Kumar is a seasoned Digital Marketing Manager and passionate Tech Blogger with deep expertise in SEO, AI trends, and emerging digital technologies. He writes about innovative solutions that drive growth and transformation across industry. Featured on - YOURSTORY | TECHSLING | ELEARNINGINDUSTRY | DATASCIENCECENTRAL | TIMESOFINDIA | MEDIUM | DATAFLOQ\",\"sameAs\":[\"https:\/\/www.aeologic.com\/\",\"https:\/\/www.linkedin.com\/in\/manoj-kumar-rajput\/\"],\"url\":\"https:\/\/www.aeologic.com\/blog\/author\/manoj\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"All About Indexing and Basic Data Operations - Part 5 - Ultimate Solr Guide - Aeologic Blog","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:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/","og_locale":"en_US","og_type":"article","og_title":"All About Indexing and Basic Data Operations - Part 5 - Ultimate Solr Guide - Aeologic Blog","og_description":"Hello All, Today I&#8217;m here with another post to discuss another important aspect with respect to indexing operations in Solr. Invariably we encounter scenarios where we need to index data in a language of a different origin or more so, we need to index data of multiple languages. The dynamics to fulfil this requirement is of immense importance for any business given the gravity of the need. Solr helps to index the languages of different origins by having a language detection mechanism built for the same. Essentially, Solr can identify languages and map text to language-specific fields during indexing using the\u00a0langid\u00a0UpdateRequestProcessor. Solr supports three implementations of this feature: Tika\u2019s language detection feature:\u00a0https:\/\/tika.apache.org\/1.17\/detection.html LangDetect language detection:\u00a0https:\/\/github.com\/shuyo\/language-detection OpenNLP language detection:\u00a0http:\/\/opennlp.apache.org\/docs\/1.8.3\/manual\/opennlp.html#tools.langdetect You can see a comparison between the Tika and LangDetect implementations here:\u00a0http:\/\/blog.mikemccandless.com\/2011\/10\/accuracy-and-performance-of-googles.html. In general, the LangDetect implementation supports more languages with higher performance. Configuring Language Detection You can configure the\u00a0langid\u00a0UpdateRequestProcessor in\u00a0solrconfig.xml. Both implementations take the same parameters, which are described in the following section. At a minimum, you must specify the fields for language identification and a field for the resulting language code. Configuring Tika Language Detection Here is an example of a minimal Tika\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: Configuring LangDetect Language Detection Here is an example of a minimal LangDetect\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: Configuring OpenNLP Language Detection Here is an example of a minimal OpenNLP\u00a0langid\u00a0configuration in\u00a0solrconfig.xml: langid Parameters As previously mentioned, both implementations of the\u00a0langid\u00a0UpdateRequestProcessor take the same parameters. langid When\u00a0true, the default, enables language detection. langid.fl A comma- or space-delimited list of fields to be processed by\u00a0langid. This parameter is required. langid.langField Specifies the field for the returned language code. This parameter is required. langid.langsField Specifies the field for a list of returned language codes. If you use\u00a0langid.map.individual, each detected language will be added to this field. langid.overwrite Specifies whether the content of the\u00a0langField\u00a0and\u00a0langsField\u00a0fields will be overwritten if they already contain values. The default is\u00a0false. langid.lcmap A space-separated list specifying colon delimited language code mappings to apply to the detected languages. For example, you might use this to map Chinese, Japanese, and Korean to a common\u00a0cjk\u00a0code, and map both American and British English to a single\u00a0en\u00a0code by using\u00a0langid.lcmap=ja:cjk zh:cjk ko:cjk en_GB:en en_US:en. This affects both the values put into the\u00a0langField\u00a0and\u00a0langsField\u00a0fields, as well as the field suffixes when using\u00a0langid.map, unless overridden by\u00a0langid.map.lcmap. langid.threshold Specifies a threshold value between 0 and 1 that the language identification score must reach before\u00a0langid\u00a0accepts it. With longer text fields, a high threshold such as\u00a00.8\u00a0will give good results. For shorter text fields, you may need to lower the threshold for language identification, though you will be risking somewhat lower quality results. We recommend experimenting with your data to tune your results. The default is\u00a00.5. langid.whitelist Specifies a list of allowed language identification codes. Use this in combination with\u00a0langid.map\u00a0to ensure that you only index documents into fields that are in your schema. langid.map Enables field name mapping. If\u00a0true, Solr will map field names for all fields listed in\u00a0langid.fl. The default is\u00a0false. langid.map.fl A comma-separated list of fields for\u00a0langid.map\u00a0that is different than the fields specified in\u00a0langid.fl. langid.map.keepOrig If\u00a0true, Solr will copy the field during the field name mapping process, leaving the original field in place. The default is\u00a0false. langid.map.individual If\u00a0true, Solr will detect and map languages for each field individually. The default is\u00a0false. langid.map.individual.fl A comma-separated list of fields for use with\u00a0langid.map.individual\u00a0that is different than the fields specified in\u00a0langid.fl. langid.fallback Specifies a language code to use if no language is detected or specified in\u00a0langid.fallbackFields. langid.fallbackFields If no language is detected that meets the\u00a0langid.threshold\u00a0score, or if the detected language is not on the\u00a0langid.whitelist, this field specifies language codes to be used as fallback values. If no appropriate fallback languages are found, Solr will use the language code specified in\u00a0langid.fallback. langid.map.lcmap A space-separated list specifying colon-delimited language code mappings to use when mapping field names. For example, you might use this to make Chinese, Japanese, and Korean language fields use a common\u00a0*_cjk\u00a0suffix, and map both American and British English fields to a single\u00a0*_en\u00a0by using\u00a0langid.map.lcmap=ja:cjk zh:cjk ko:cjk en_GB:en en_US:en. A list defined with this parameter will override any configuration set with\u00a0langid.lcmap. langid.map.pattern By default, fields are mapped as &lt;field&gt;_&lt;language&gt;. To change this pattern, you can specify a Java regular expression in this parameter. langid.map.replace By default, fields are mapped as\u00a0&lt;field&gt;_&lt;language&gt;. To change this pattern, you can specify a Java replace in this parameter. langid.enforceSchema If\u00a0false, the\u00a0langid\u00a0processor does not validate field names against your schema. This may be useful if you plan to rename or delete fields later in the UpdateChain. The default is\u00a0true. So, this is it on language detection in Solr. Stay tuned for another post about &#8220;Language Analysis&#8221; in Solr.","og_url":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/","og_site_name":"Aeologic Blog","article_publisher":"https:\/\/www.facebook.com\/AeoLogicTech\/","article_published_time":"2020-03-24T09:54:32+00:00","article_modified_time":"2020-03-24T11:53:03+00:00","og_image":[{"width":1080,"height":622,"url":"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png","type":"image\/png"}],"author":"Manoj Kumar","twitter_card":"summary_large_image","twitter_creator":"@aeologictech","twitter_site":"@aeologictech","twitter_misc":{"Written by":"Manoj Kumar","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#article","isPartOf":{"@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/"},"author":{"name":"Manoj Kumar","@id":"https:\/\/www.aeologic.com\/blog\/#\/schema\/person\/13549984ba8e5f441cc733ed20d7daa4"},"headline":"All About Indexing and Basic Data Operations &#8211; Part 5 &#8211; Ultimate Solr Guide","datePublished":"2020-03-24T09:54:32+00:00","dateModified":"2020-03-24T11:53:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/"},"wordCount":804,"publisher":{"@id":"https:\/\/www.aeologic.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png","keywords":["language detection solr"],"articleSection":["Solr"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/","url":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/","name":"All About Indexing and Basic Data Operations - Part 5 - Ultimate Solr Guide - Aeologic Blog","isPartOf":{"@id":"https:\/\/www.aeologic.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png","datePublished":"2020-03-24T09:54:32+00:00","dateModified":"2020-03-24T11:53:03+00:00","breadcrumb":{"@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#primaryimage","url":"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png","contentUrl":"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2020\/02\/Indexing-and-Basic-Data-Operations.png","width":1080,"height":622},{"@type":"BreadcrumbList","@id":"https:\/\/www.aeologic.com\/blog\/all-about-indexing-and-basic-data-operations-part-5-ultimate-solr-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.aeologic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"All About Indexing and Basic Data Operations &#8211; Part 5 &#8211; Ultimate Solr Guide"}]},{"@type":"WebSite","@id":"https:\/\/www.aeologic.com\/blog\/#website","url":"https:\/\/www.aeologic.com\/blog\/","name":"Aeologic Blog","description":"Aeologic","publisher":{"@id":"https:\/\/www.aeologic.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.aeologic.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.aeologic.com\/blog\/#organization","name":"AeoLogic Technologies","url":"https:\/\/www.aeologic.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.aeologic.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2022\/05\/new-logo-aeo.jpg","contentUrl":"https:\/\/www.aeologic.com\/blog\/wp-content\/uploads\/2022\/05\/new-logo-aeo.jpg","width":385,"height":162,"caption":"AeoLogic Technologies"},"image":{"@id":"https:\/\/www.aeologic.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/AeoLogicTech\/","https:\/\/x.com\/aeologictech"]},{"@type":"Person","@id":"https:\/\/www.aeologic.com\/blog\/#\/schema\/person\/13549984ba8e5f441cc733ed20d7daa4","name":"Manoj Kumar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.aeologic.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/24ce77602da5eb5715d74a95733f6c7548e2af73f5a493f9bc0bf55f611d025e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/24ce77602da5eb5715d74a95733f6c7548e2af73f5a493f9bc0bf55f611d025e?s=96&d=mm&r=g","caption":"Manoj Kumar"},"description":"Manoj Kumar is a seasoned Digital Marketing Manager and passionate Tech Blogger with deep expertise in SEO, AI trends, and emerging digital technologies. He writes about innovative solutions that drive growth and transformation across industry. Featured on - YOURSTORY | TECHSLING | ELEARNINGINDUSTRY | DATASCIENCECENTRAL | TIMESOFINDIA | MEDIUM | DATAFLOQ","sameAs":["https:\/\/www.aeologic.com\/","https:\/\/www.linkedin.com\/in\/manoj-kumar-rajput\/"],"url":"https:\/\/www.aeologic.com\/blog\/author\/manoj\/"}]}},"_links":{"self":[{"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/posts\/758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/comments?post=758"}],"version-history":[{"count":0,"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/posts\/758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/media\/635"}],"wp:attachment":[{"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/media?parent=758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/categories?post=758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aeologic.com\/blog\/wp-json\/wp\/v2\/tags?post=758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}