Indizierung benutzerdefinierter JSON-Daten

Solr unterstützt bereits Aktualisierungsanfragen im JSON-Format. Aber es unterstützt nur das Solr-Json-Format und nicht Ihr eigenes benutzerdefiniertes JSON. Jetzt (mit SOLR-6304, ab Version 4.10) unterstützt Solr jedes JSON-Dokument und das Dokument kann im gewünschten Format in Solr indiziert werden.

Transformieren und Indizieren von benutzerdefinierten JSON-Daten

Das Ziel dieser Funktion ist es, den Benutzern zu helfen, JSON in ein gültiges Solr-Dokument zu indexieren, je nach den Wünschen des Benutzers. Sie ermöglicht es dem Benutzer, eine einzelne JSON-Datei in 1 oder mehrere Solr-Dokumente aufzuteilen. Das endgültige indizierte Dokument kann über das Mapping, das mit der Anfrage übergeben wird, gesteuert werden. Ein oder mehrere gültige JSON-Dokumente können mit den Konfigurationsparametern an den Pfad /update/json/docs gesendet werden.

Parameter zuordnen

 

  • split: Dieser Parameter ist erforderlich, wenn Sie die JSON-Eingabe transformieren möchten. Dies ist der Pfad, an dem das JSON geteilt werden muss. Wenn das gesamte JSON ein einziges Solr-Dokument bildet, muss der Pfad „/“ sein.
  • f: Dies ist ein mehrwertiger Zuordnungsparameter. Es muss mindestens eine Feldzuordnung angegeben werden. Das Format des Parameters ist {target-field-name}: {json-path}. Der ‚json-path‘ ist ein erforderlicher Teil . target-field-name ist der Name des Feldes im Solr-Eingabedokument. Er ist optional und wird automatisch aus der json-Eingabe abgeleitet.
  • echo: Dies dient der Fehlersuche. Setzen Sie es auf true , wenn Sie die Dokumente als Antwort zurückgeben möchten. Es wird nichts indiziert

Beispiel 1:

curl 'http://localhost:8983/solr/collection1/update/json/docs'
'?split=/exams'
'&f=first:/first'
'&f=last:/last'
'&f=grade:/grade'
'&f=subject:/exams/subject'
'&f=test:/exams/test'
'&f=marks:/exams/marks'
 -H 'Content-type:application/json' -d '
{
  "first": "John",
  "last": "Doe",
  "grade": 8,
  "exams": [
      {
        "subject": "Maths",
        "test"   : "term1",
        "marks":90},
        {
         "subject": "Biology",
         "test"   : "term1",
         "marks":86}
      ]
}'

Dies indiziert die folgenden zwei Dokumente

   {
      "first":"John",
      "last":"Doe",
      "marks":90,
      "test":"term1",
      "subject":"Maths",
      "grade":8
      }
    {
      "first":"John",
      "last":"Doe",
      "marks":86,
      "test":"term1",
      "subject":"Biology",
      "grade":8
      }

Da die endgültigen Feldnamen mit den Feldern des Eingabedokuments übereinstimmen, kann die Anfrage wie folgt vereinfacht werden,

Beispiel 2 :

curl 'http://localhost:8983/solr/collection1/update/json/docs'
'?split=/exams'
'&f=/first'
'&f=/last'
'&f=/grade'
'&f=/exams/subject'
'&f=/exams/test'
'&f=/exams/marks'
 -H 'Content-type:application/json' -d '
{
  "first": "John",
  "last": "Doe",
  "grade": 8,
  "exams": [
      {
        "subject": "Maths",
        "test"   : "term1",
        "marks":90},
        {
         "subject": "Biology",
         "test"   : "term1",
         "marks":86}
      ]
}'

Wildcards

Anstatt alle Feldnamen explizit anzugeben, ist es möglich, einen Platzhalter „*“ oder einen Platzhalter „**“ anzugeben, um Felder automatisch zuzuordnen. Die Einschränkung ist, dass Wildcards nur am Ende des json-Pfads verwendet werden können. Der geteilte Pfad kann keine Platzhalter verwenden. Im Folgenden finden Sie Beispiele für die Zuordnung von Platzhaltern zu Pfaden

  • f=/docs/*: bildet alle Felder unter docs und im Namen wie in json angegeben ab
  • f=/docs/**: mappt alle Felder unter docs und seine Kinder im Namen wie in json angegeben
  • f=searchField:/docs/*: ordnet alle Felder unter /docs einem einzigen Feld namens ’searchField‘ zu
  • f=searchField:/docs/** : ordnet alle Felder unter /docs und seinen Kindern dem searchField zu

Mit Wildcards können wir unser vorheriges Beispiel wie folgt vereinfachen

Beispiel 3:

'curl 'http://localhost:8983/solr/collection1/update/json/docs'
'?split=/exams'
'&f=/**'
 -H 'Content-type:application/json' -d '
{
  "first": "John",
  "last": "Doe",
  "grade": 8,
  "exams": [
      {
        "subject": "Maths",
        "test"   : "term1",
        "marks":90},
        {
         "subject": "Biology",
         "test"   : "term1",
         "marks":86}
      ]
}'

Es ist auch möglich, alle Werte an ein einzelnes Feld zu senden und eine Volltextsuche in diesem Feld durchzuführen. Dies ist eine gute Möglichkeit, JSON-Dokumente blind zu indizieren und abzufragen, ohne sich um Felder und Schemata kümmern zu müssen.

Beispiel 4 :

'curl 'http://localhost:8983/solr/collection1/update/json/docs'
'?split=/'
'&f=txt:/**'
 -H 'Content-type:application/json' -d '
{
  "first": "John",
  "last": "Doe",
  "grade": 8,
  "exams": [
      {
        "subject": "Maths",
        "test"   : "term1",
        "marks":90},
        {
         "subject": "Biology",
         "test"   : "term1",
         "marks":86}
      ]
}'
Share the knowledge

You Might Also Like

Lucidworks zum Leader ernannt: Was das für die Suche, KI und Ihr Unternehmen bedeutet

Die Anerkennung von Lucidworks als Leader signalisiert, dass Unternehmenssuche und KI heute...

Read More

MCP vs. ACP: Was ist der Unterschied, und wann sollten beide verwendet werden?

Künstliche Intelligenz verändert die Art und Weise, wie Menschen mit Daten, Produkten...

Read More

Die Zukunft des digitalen Handels mit ACP: Von statischen Katalogen zu Agentenverhandlungen

Seit Jahrzehnten basiert der digitale Handel auf einem vertrauten Konzept: dem statischen...

Read More

Quick Links