Configuration
Breadcrumbs

Search Engine Configuration

In Anjana Data Platform, the search engine is a key component for the efficient exploitation of metadata and data asset management. Its configuration must be designed to maximize the relevance of results, taking into account the object subtypes and metadata attributes most significant to the business.

This guide explains how to modify the behavior of the Anjana Data Platform search engine by configuring SOLR. This allows adjusting the relevance of object subtypes and their metadata, applying stopword filters, and defining custom search field types to optimize search results.

Prerequisites

  • Access to the SOLR core configuration API (kerno) in your Anjana Data environment.

  • Basic knowledge of curl commands and JSON format.

  • The commands assume that the kerno collection is being used.

  • For curl commands, the -k option is used for insecure connections (ignore SSL certificate), which may be necessary in test environments or with self-signed certificates.

The following details the complete configuration procedure for the weights, which is recommended to be executed from start to finish.

When reusing the commands included in this guide, replace <url_entorno> with the corresponding value.

If, after completing all the steps, the portal does not load correctly, it is recommended to delete the search engine configurations.

1. Main Search Handler Configuration (/select)

This step defines how search results are ordered and prioritized in Anjana Data Platform.
Through the configuration of the /select handler, the following is established:

  • Which asset types should appear first.

  • Which asset attributes carry more weight when calculating relevance.

In this way, the search engine adapts to the real business use, prioritizing the assets that bring the most value to the end user.

Example Command

The following example defines result priorities based on:

  • Object subtype (OBJ_SUB_TYPE)

    • DATASET_FIELD: penalized with a weight of -10 so that dataset fields appear at the end of results.

    • DATASET: weight 18

    • DSA: weight 17

    • PROCESS: weight 16

    • INSTANCE: weight 15

    • SOLUTION: weight 14

    This means that, for example, a complete dataset will appear before its individual fields when the user performs a search.

  • Key metadata attributes

    • OBJ_NAME: assigned a weight of 25, which means the logical name of the asset is one of the most important factors in deciding which result is shown first.

curl -k -X POST --header 'Content-type: application/json' -d '{
  "update-requesthandler": {
    "name": "/select",
    "class": "solr.SearchHandler",
    "defaults": {
      "echoParams": "explicit",
      "rows": "10",
      "defType": "edismax",
      "qf": "OBJ_SUB_TYPE^25 OBJ_NAME^25 _text_^0.5",
      "bf": "if(termfreq(OBJ_SUB_TYPE,\"DATASET_FIELD\"),-10,if(termfreq(OBJ_SUB_TYPE,\"DATASET\"),18,if(termfreq(OBJ_SUB_TYPE,\"DSA\"),17,if(termfreq(OBJ_SUB_TYPE,\"PROCESS\"),16,if(termfreq(OBJ_SUB_TYPE,\"INSTANCE\"),15,if(termfreq(OBJ_SUB_TYPE,\"SOLUTION\"),14,1))))))"
    }
  }
}' https://solr1server.<url_entorno>:8983/solr/kerno/config

High-Level Explanation:

This command updates the search engine configuration to:

  • Prioritize the most relevant information for the business
    It specifies that certain asset types (e.g., DATASET or DSA) should appear above others (such as DATASET_FIELD). This helps users see the most significant assets first and not get lost in overly detailed results.

  • Give more weight to key fields in the search
    The object subtype (OBJ_SUB_TYPE) and the logical name of the asset (OBJ_NAME) are particularly reinforced, so that:

    • If the search term appears in the asset name, that result moves up in the rankings.

    • If the term relates to an asset type that the business considers more relevant (for example, a DATASET versus a field), this is also reflected in the order of results.

In summary, this step allows the client to align the search engine ranking with their business priorities, without needing to change the functional logic of the platform.

2. Stopword List Configuration

Stopwords are common words that are excluded from the search because they provide no value for identifying an asset.
They are terms that appear very frequently in natural language but which, by themselves, do not help differentiate or locate relevant information.

Typical examples would be:

  • In Spanish: de, la, los, un, para, con, sobre, este, esa…

  • In English: the, a, at, on, of, by, this…

If these words were kept within the search analysis:

  • They would overshadow genuinely relevant terms.

  • They would reduce the precision of results.

  • They would make the search engine slower or less efficient.

For this reason, Solr allows defining stopword lists that filter these words before the indexing and query process, preventing them from influencing the relevance of results.

2.1. Creating Stopword Resources

These commands create the managed stopword resources for Spanish and English in the SOLR schema.

Example Commands (Creation):

curl -k -X PUT -H 'Content-type:application/json' --data-binary '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' "https://solr1server.<url_entorno>:8983/solr/kerno/schema/analysis/stopwords/spanish"
curl -k -X PUT -H 'Content-type:application/json' --data-binary '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' "https://solr1server.<url_entorno>:8983/solr/kerno/schema/analysis/stopwords/english"

High-Level Explanation:

Two managed word set resources (ManagedWordSetResource) are created in the SOLR schema, one called spanish and another english. This allows managing the stopword lists through the API instead of static files.

2.2. Inserting Spanish and English Stopwords

This command inserts the stopword list specific to the Spanish language.

Example Command (Spanish):

curl -k -X PUT -H 'Content-type:application/json' --data-binary '["últimos","último","últimas","última","éstos","éste","éstas","ésta","éramos","él","yo","ya","y","vuestros","vuestro","vuestras","vuestra","voy","vosotros","vosotras","vez","VERDADERO","verdadera","verdad","ver","veces","vaya","varios","varias","van","vamos","valor","vais","va","usted","uso","usas","usar","usan","usamos","usais","usa","unos","uno","unas","una","un","ultimo","tú","tuyos","tuyo","tuyas","tuya","tuvo","tuviésemos","tuviéramos","tuvisteis","tuviste","tuvimos","tuvieses","tuviesen","tuvieseis","tuviese","tuvieron","tuvieras","tuvieran","tuvierais","tuviera","tuve","tus","tu","tres","través","trata","tras","trabajo","trabajas","trabajar","trabajan","trabajamos","trabajais","trabaja","total","todos","todo","todavía","todas","toda","tienes","tienen","tiene","tiempo","ti","tercera","tenías","tenían","teníamos","teníais","tenía","tenéis","teniendo","tenidos","tenido","tenidas","tenida","tengáis","tengo","tengas","tengan","tengamos","tenga","tener","tenemos","teneis","tened","tendrías","tendrían","tendríamos","tendríais","tendría","tendréis","tendré","tendrás","tendrán","tendrá","tendremos","te","tanto","tan","tampoco","también","tal","sólo","sí","suyos","suyo","suyas","suya","sus","su","soy","son","somos","solos","solo","solas","solamente","sola","sois","sobre","sino","sin","siguiente","sigue","siete","ya","y","vez","ver","veces","varios","varias","usted","tuvo","tres","través","trata","total","todos","todavía","todas","toda","tercera","tenido","tenga","tendrán","tendrá","tenía","tanto","tan","tampoco","tal","son","solos","solas","sola","sino","siguiente","sigue","siete","siempre","sido","sería","serán","será","seis","segundo","segunda","según","sean","sea","señaló","se","sólo","sí","respecto","realizar","realizado","realizó","quiere","quienes","quién","queremos","quedó","que","qué","pues","pueda","pudo","propios","propio","propias","propia","principalmente","primeros","primera","primer","próximos","próximo","posible","poner","podrían","podría","podrán","podrá","pocos","poco","pocas","poca","pesar","pasado","pasada","partir","parte","parece","otros","otras","otra","ocho","o","nunca","nuevos","nuevo","nuevas","nueva","nuestros","nuestro","nuestras","nuestra","nosotras","no","ningunos","ninguno","ningunas","ninguna","ningún","ni","nadie","nada","mucho","muchas","mucha","momento","mismos","mismo","mismas","misma","mi","menos","mencionó","mejor","mediante","me","mayor","manifestó","manera","más","lugar","luego","llevar","lleva","llegó","les","le","lado","junto","informó","indicó","igual","hubo","hoy","hizo","hicieron","hemos","hecho","he","haya","hay","hasta","han","haciendo","hacia","hacerlo","habrá","haber","habían","había","grandes","gran","fuera","expresó","explicó","existen","existe","ex","estuvo","estos","esto","este","estas","estará","estar","estaban","están","está","esos","eso","ese","esas","esa","encuentra","embargo","ello","ella","ejemplo","e","durante","dio","dijo","dijeron","diferentes","diferente","dieron","dicho","dicen","dice","después","demás","del","dejó","decir","debido","deben","debe","de","dar","dan","dado","da","cuenta","cuatro","cuanto","cualquier","cuales","creo","cosas","contra","considera","consideró","conocer","comentó","cinco","cerca","casi","cómo","buenos","bueno","buenas","buena","buen","ayer","aunque","aseguró","así","aquí","aproximadamente","apenas","anterior","alrededor","algo","al","ahora","ahí","agregó","afirmó","además","adelante","actualmente","aún","añadió","a","últimos","último","últimas","última","éstos","éste","éstas","ésta","él","yo","voy","vosotros","vosotras","VERDADERO","verdadera","verdad","vaya","van","vamos","valor","vais","va","uso","usas","usar","usan","usamos","usais","usa","unos","uno","unas","una","un","ultimo","tuyo","tras","trabajo","trabajas","trabajar","trabajan","trabajamos","trabajais","trabaja","todo","tienen","tiene","tiempo","tengo","tener","tenemos","teneis","también","sus","su","soy","somos","solo","solamente","sois","sobre","sin","siendo","si","ser","sabes","saber","saben","sabemos","sabeis","sabe","quien","puedo","pueden","puede","primero","porque","por qué","por","podrias","podrian","podriamos","podriais","podria","poder","podemos","podeis","pero","para","otro","nosotros","nos","muy","muchos","modo","mio","mientras","los","lo","las","largo","la","ir","intento","intentas","intentar","intentan","intentamos","intentais","intenta","incluso","hago","haces","hacer","hacen","hacemos","haceis","hace","ha","gueno","fuimos","fui","fueron","fue","fin","estoy","estan","estamos","estais","estado","estaba","esta","es","eres","eras","eran","eramos","era","entre","entonces","encima","en","empleo","empleas","emplear","emplean","empleais","ellos","ellas","el","dos","donde","desde","dentro","cuando","cual","consigues","consiguen","consigue","consigo","conseguir","conseguimos","con","como","ciertos","cierto","ciertas","cierta","cada","bien","bastante","bajo","atras","arriba","aqui","aquellos","aquellas","aquel","antes","ante","ampleamos","ambos","algunos","alguno","algunas","alguna","algún","algo","al","ahí","ahora","agregó","afirmó","además","adelante","actualmente","a"]' "https://solr1server.<url_entorno>:8983/solr/kerno/schema/analysis/stopwords/spanish"

Example Command (English):

curl -k -X PUT -H 'Content-type:application/json' --data-binary '["youre","youd","world","words","widely","whos","whod","whim","wheres","whats","wed","vols","vol","'\''ve","usefulness","usefully","ups","ts","tip","til","throug","thousand","thoughh","thou","theyre","theyd","thereto","therere","thereof","thered","suggest","sufficiently","successfully","substantially","strongly","stop","states","state","specifically","somethan","slightly","similarly","similar","significantly","significant","shows","showns","shown","showed","shes","shed","section","sec","run","results","resulting","resulted","research","related","refs","ref","readily","ran","quickly","proud","promptly","primarily","previously","present","predominantly","pp","potentially","possibly","poorly","pages","page","owing","ord","omitted","obtained","obtain","noted","nos","necessarily","nay","na","mug","ml","million","mg","means","'\''ll","line","lets","largely","km","kg","keys","itd","invention","information","index","important","importance","immediately","im","id","home","hid","hes","heres","giving","gave","fix","ff","et-al","effect","ed","date","ca","briefly","biol","begins","beginnings","beginning","auth","arise","arent","aren","approximately","apparently","anymore","announce","ah","affects","affecting","affected","adopted","added","act","accordance","abst","twenty","twelve","top","thin","thick","ten","system","sixty","sincere","side","show","put","part","myse"","move","mill","itse"","interest","himse","herse","hasnt","give","full","front","forty","fire","find","fill","fifty","fifteen","empty","eleven","due","detail","describe","de","cry","couldnt","con","computer","call","bottom","bill","amount","www","I","z","y","x","w","uucp","u","t","s","r","q","p","o","n","m","l","j","h","g","f","e","d","c","b","why'\''s","when'\''s","i","how'\''s","a","zero","you'\''ve","yourselves","yourself","yours","you'\''re","your","you'\''ll","you'\''d","you","yet","yes","wouldn'\''t","would","won'\''t","wonder","without","within","with","wish","willing","will","why","whose","who'\''s","whomever","whom","who'\''ll","whole","whoever","who'\''d","who","whither","whilst","while","whichever","which","whether","wherever","whereupon","where'\''s","wherein","whereby","whereas","whereafter","where","whenever","whence","when","what'\''ve","what'\''s","what'\''ll","whatever","what","we'\''ve","weren'\''t","we'\''re","were","went","we'\''ll","well","welcome","we'\''d","we","way","wasn'\''t","was","wants","want","vs","viz","via","very","versus","various","value","v","usually","using","uses","useful","used","use","us","upwards","upon","up","unto","until","unlikely","unlike","unless","unfortunately","undoing","underneath","under","un","two","twice","t'\''s","trying","try","truly","tries","tried","towards","toward","took","too","together","to","till","thus","thru","throughout","through","three","though","those","thoroughly","thorough","this","thirty","third","think","things","thing","they'\''ve","they'\''re","they'\''ll","they'\''d","they","these","there'\''ve","thereupon","there'\''s","theres","there'\''re","there'\''ll","therein","therefore","there'\''d","thereby","thereafter","there","thence","then","themselves","them","theirs","their","the","that'\''ve","that'\''s","thats","that'\''ll","that","thanx","thanks","thank","than","th","tends","tell","taking","taken","take","sure","sup","such","sub","still","specifying","specify","specified","sorry","soon","somewhere","somewhat","sometimes","sometime","something","someone","somehow","someday","somebody","some","so","six","since","shouldn'\''t","should","she'\''s","she'\''ll","she'\''d","she","shan'\''t","shall","several","seven","seriously","serious","sent","sensible","selves","self","seen","seems","seeming","seemed","seem","seeing","see","secondly","second","says","saying","say","saw","same","said","round","right","respectively","relatively","regards","regardless","regarding","recently","recent","reasonably","really","re","rd","rather","qv","quite","que","provides","provided","probably","presumably","possible","plus","please","placed","perhaps","per","past","particularly","particular","own","overall","over","outside","out","ourselves","ours","our","oughtn'\''t","ought","otherwise","others","other","or","opposite","onto","only","one'\''s","ones","one","once","on","old","okay","ok","oh","often","off","of","obviously","nowhere","now","novel","notwithstanding","nothing","not","normally","nor","no-one","noone","nonetheless","none","non","nobody","no","ninety","nine","next","new","nevertheless","neverless","neverf","never","neither","needs","needn'\''t","need","necessary","nearly","near","nd","namely","name","myself","my","mustn'\''t","must","much","mrs","mr","mostly","most","moreover","more","miss","minus","mine","mightn'\''t","might","merely","meanwhile","meantime","mean","me","mayn'\''t","maybe","may","many","makes","make","mainly","made","ltd","lower","low","looks","looking","look","little","likewise","likely","liked","like","let'\''s","let","lest","less","least","latterly","latter","later","lately","last","knows","known","know","kept","keeps","keep","k","just","i'\''ve","itself","it'\''s","its","it'\''ll","it'\''d","it","isn'\''t","is","inward","into","instead","insofar","inside","inner","indicates","indicated","indicate","indeed","inc.","inc","inasmuch","in","immediate","i'\''m","i'\''ll","ignored","if","ie","i'\''d","hundred","however","howbeit","how","hopefully","hither","his","himself","him","hi","he'\''s","herself","hers","hereupon","here'\''s","herein","hereby","hereafter","here","her","hence","help","hello","he'\''ll","he'\''d","he","having","haven'\''t","have","hasn'\''t","has","hardly","happens","half","hadn'\''t","had","greetings","gotten","got","gone","going","goes","go","gives","given","getting","gets","get","furthermore","further","from","four","found","forward","forth","formerly","former","forever","for","follows","following","followed","five","first","fifth","fewer","few","farther","far","fairly","except","example","exactly","ex","everywhere","everything","everyone","everybody","every","evermore","ever","even","etc","et","especially","entirely","enough","ending","end","elsewhere","else","either","eighty","eight","eg","edu","each","during","downwards","down","don'\''t","done","doing","doesn'\''t","does","do","directly","different","didn'\''t","did","despite","described","definitely","daren'\''t","dare","currently","c'\''s","course","couldn'\''t","could","corresponding","contains","containing","contain","considering","consider","consequently","concerning","comes","come","com","co.","co","c'\''mon","clearly","changes","certainly","certain","causes","cause","caption","can'\''t","cant","cannot","can","came","by","but","brief","both","beyond","between","better","best","besides","beside","below","believe","being","behind","begin","beforehand","before","been","becoming","becomes","become","because","became","be","backwards","backward","back","awfully","away","available","at","associated","asking","ask","aside","a'\''s","as","around","aren'\''t","are","appropriate","appreciate","appear","apart","anywhere","anyways","anyway","anything","anyone","anyhow","anybody","any","another","and","an","amongst","among","amidst","amid","am","always","although","also","already","alongside","along","alone","almost","allows","allow","all","ain'\''t","ahead","ago","against","again","afterwards","after","adj","actually","across","accordingly","according","abroad","above","about","able"]' "https://solr1server.<url_entorno>:8983/solr/kerno/schema/analysis/stopwords/english"

High-Level Explanation:

The spanish and english resources are updated to include an extensive set of stopwords in Spanish and English. These words will be ignored during indexing and querying, improving the relevance of results.

3. Custom Search Field Type Configuration

3.1 What is a wildcard in the context of searches?

In search engines like SOLR, a wildcard allows the user to find results even if they only type part of a word.
Classic examples:

  • ana* finds analytics, análisis, anagram.

  • *meta* finds telemetry, metadata, parametry.

However, explicit wildcards (using *) are costly for SOLR, especially if they appear at the beginning (*ana) because they force scanning many entries.

That is why the strategy exists of enabling “implicit” wildcard-like functionality through a field type designed to fragment text and allow partial matches without needing to use * in the query.

3.2 What is the text_general_anjana_wildcard field type for?

This field type is created within the SOLR schema so that certain searches do not depend on the exact word, but instead allow:

  • Partial matches

  • Fragment matches

  • Flexible searches without requiring the user to enter a wildcard

In other words:

The field transforms texts into n-grams (fragments) or appropriate tokens, allowing typing only part of a word to already return results.

3.3 Creating text_general_anjana_wildcard (For Partial Searches)

This field type is designed to enable searches that work well with word fragments or implicit wildcard searches.

Example Command (Creating Wildcard Field Type):

curl -k -X POST -H 'Content-type:application/json' -d '{
  "add-field-type": {
    "name": "text_general_anjana_wildcard",
    "class": "solr.TextField",
    "positionIncrementGap": "100",
    "multiValued": true,
    "indexAnalyzer": {
      "tokenizer": {
        "class": "solr.NGramTokenizerFactory",
        "minGramSize": "3",
        "maxGramSize": "100"
      },
      "filters": [
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "spanish"
        },
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "english"
        },
        {
          "class": "solr.LowerCaseFilterFactory"
        }
      ]
    },
    "queryAnalyzer": {
      "tokenizer": {
        "class": "solr.StandardTokenizerFactory"
      },
      "filters": [
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "spanish"
        },
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "english"
        },
        {
          "class": "solr.LowerCaseFilterFactory"
        }
      ]
    }
  }
}' https://solr1server.<url_entorno>:8983/solr/kerno/schema

High-Level Explanation:

The new field type text_general_anjana_wildcard is added. The key here is the use of solr.NGramTokenizerFactory in the indexAnalyzer with minGramSize: 3. This splits words into substrings of 3 or more characters during indexing (e.g., "dato" is indexed as "dat", "ato", "dato"), facilitating partial searches. The stopword and lowercase filters are applied.

3.4. Replacing text_general (For Standard Text Search)

This step improves the standard text analysis used by many fields in SOLR.

Example Command (Replacing text_general):

curl -k -X POST -H 'Content-type:application/json' -d '{
  "replace-field-type": {
    "name": "text_general",
    "class": "solr.TextField",
    "positionIncrementGap": "100",
    "multiValued": true,
    "indexAnalyzer": {
      "tokenizer": {
        "class": "solr.StandardTokenizerFactory"
      },
      "filters": [
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "spanish"
        },
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "english"
        },
        {
          "class": "solr.LowerCaseFilterFactory"
        },
        {
          "class": "solr.SpanishLightStemFilterFactory"
        },
        {
          "class": "solr.SnowballPorterFilterFactory"
        }
      ]
    },
    "queryAnalyzer": {
      "tokenizer": {
        "class": "solr.StandardTokenizerFactory"
      },
      "filters": [
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "spanish"
        },
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "english"
        },
        {
          "class": "solr.SynonymGraphFilterFactory",
          "expand": "true",
          "ignoreCase": "true",
          "synonyms": "synonyms.txt"
        },
        {
          "class": "solr.LowerCaseFilterFactory"
        },
        {
          "class": "solr.SpanishLightStemFilterFactory"
        },
        {
          "class": "solr.SnowballPorterFilterFactory"
        }
      ]
    }
  }
}' https://solr1server.<url_entorno>:8983/solr/kerno/schema

High-Level Explanation:

The definition of the text_general field type is replaced to:

  • Apply Stemming: solr.SpanishLightStemFilterFactory and solr.SnowballPorterFilterFactory are added to lemmatize words (reduce them to their root, e.g., "corriendo" to "corr-"). This improves result matching.

  • Apply Synonyms: solr.SynonymGraphFilterFactory is included in the queryAnalyzer to expand searches using a synonyms file (synonyms.txt), allowing a search for a keyword to also find its synonyms.

3.5. Replacing text_general_anjana (For Sortable Fields)

This field type is generally used for fields whose content must be analyzed but also must be suitable for sorting.

Example Command (Replacing text_general_anjana):

curl -k -X POST -H 'Content-type:application/json' -d '{
  "replace-field-type": {
    "name": "text_general_anjana",
    "class": "solr.SortableTextField",
    "multiValued": true,
    "indexAnalyzer": {
      "tokenizer": {
        "class": "solr.KeywordTokenizerFactory"
      },
      "filters": [
        {
          "class": "solr.LowerCaseFilterFactory"
        },
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "spanish"
        },
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "english"
        },
        {
          "class": "solr.ASCIIFoldingFilterFactory"
        },
        {
          "class": "solr.SpanishLightStemFilterFactory"
        },
        {
          "class": "solr.SnowballPorterFilterFactory"
        }
      ]
    },
    "queryAnalyzer": {
      "tokenizer": {
        "class": "solr.KeywordTokenizerFactory"
      },
      "filters": [
        {
          "class": "solr.LowerCaseFilterFactory"
        },
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "spanish"
        },
        {
          "class": "solr.ManagedStopFilterFactory",
          "managed": "english"
        },
        {
          "class": "solr.ASCIIFoldingFilterFactory"
        },
        {
          "class": "solr.SpanishLightStemFilterFactory"
        },
        {
          "class": "solr.SnowballPorterFilterFactory"
        }
      ]
    }
  }
}' https://solr1server.<url_entorno>:8983/solr/kerno/schema

High-Level Explanation:

The definition of the text_general_anjana field type is replaced. This uses a KeywordTokenizerFactory, which means the full text is treated as a single token (useful for sorting). Filters are applied to ensure consistency: lowercase, accent removal (ASCIIFoldingFilterFactory), stopwords, and stemming.

4. Applying a Field Type to a Specific Field

Finally, the new field type text_general_anjana_wildcard is assigned to the main field OBJ_NAME to optimize searches by asset name.

Example Command (Field Type Assignment):

curl -k -X POST -H 'Content-type:application/json' --data-binary '{  "replace-field":{        "name":"OBJ_NAME",        "type":"text_general_anjana_wildcard",     "indexed":true,        "required":true,      "stored":true} }' https://solr1server.<url_entorno>:8983/solr/kerno/schema

If an indexing error occurs in the next step, run the following command:

curl -k -X POST -H 'Content-type:application/json' --data-binary '{  "replace-field":{        "name":"OBJ_NAME",        "type":"text_general_anjana_wildcard",        "multiValued":false,        "indexed":true,        "required":true,        "stored":true} }' <https://solr1server.<url_entorno>>:8983/solr/kerno/schema

High-Level Explanation:

The definition of the OBJ_NAME field is replaced so that it now uses the text_general_anjana_wildcard field type configured in section 3.1. This enables partial search (wildcard) behavior on the asset name field, dramatically improving the ability to find assets even with incomplete search terms.

5. Clearing the Kerno Collection Content and Reindexing

To clear the Kerno collection content, access the SOLR front end and run the following command:

<delete><query>*:*</query></delete>
image-20251211-170718.png
SOLR Front End: Clearing the SOLR collection content

Next, access the Anjana Data Platform Administration Portal and reindex (Actions > Force indexing)

image-20251211-170949.png
Configuration panel: Force reindexing

Deleting Search Engine Configurations

To delete any search engine configuration, follow these steps:

  1. Delete the Kerno collection with schema deletion via the API. See https://wiki.anjanadata.com/es/integraciones/25.2/api-doc

  2. Restart the Minerva microservice to recreate the collections

systemctl restart minerva