You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 45 Next »

ZDB Index

Anforderungen

  1. Suche über den Erscheinungsort
  2. Suche über den Titel der Zeitung
  3. Sortierung nach Titel
  4. Sortierung nach Erscheinungsort

Datenquelle

Der ZDB Index wird mit Hilfe der Newspaper Spark App aus dem ZDB Dump aufgebaut. 

Schema

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="newspaper" version="1.6"> 

    <similarity class="org.apache.lucene.search.similarities.ClassicSimilarity" />

    <fieldType name="string" class="solr.TextField" sortMissingLast="true" omitNorms="true">
        <analyzer>
            <tokenizer class="solr.KeywordTokenizerFactory" />
        </analyzer>
    </fieldType>

    <fieldType name="sort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
        <analyzer type="index">
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" />
            <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="([^a-zA-Z0-9])" replacement=""/>
            <tokenizer class="solr.KeywordTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
        </analyzer>
    </fieldType>

        <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
            <analyzer>
                <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" />
                <tokenizer class="solr.WhitespaceTokenizerFactory" />
                <filter class="solr.LowerCaseFilterFactory" />
                <filter class="solr.TrimFilterFactory" />
                <filter class="de.fhg.iais.cortex.search.analyzer.LengthTrimFilterFactory" length="32766" />
            </analyzer>
        </fieldType>
    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" />
    

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="title" type="text" indexed="true" stored="true" required="true" multiValued="true" />
    <field name="language" type="string" indexed="true" stored="true" required="false" multiValued="true" />
    <field name="frequency" type="string" indexed="true" stored="true" required="false" multiValued="true" />
    <field name="locationUri" type="text" indexed="true" stored="true" required="false" multiValued="true" />
    <field name="location" type="text" indexed="true" stored="true" required="false" multiValued="true" />
    <field name="progress" type="string" indexed="true" stored="true" required="false" multiValued="true" />
    <field name="hasFulltext" type="boolean" indexed="true" stored="true" required="false" multiValued="false" />
    <field name="thumbnail" type="string" indexed="true" stored="true" required="false" multiValued="false" />

    <field name="sort.title" type="sort" indexed="true" stored="false" required="true" multiValued="false" />
    <field name="sort.location" type="sort" indexed="true" stored="false" required="false" multiValued="false" />

    <!-- Field to use to determine and enforce document uniqueness. Unless this field is marked with required="false", it 
        will be a required field -->
    <uniqueKey>id</uniqueKey>

</schema>

 

Besonderheiten

...

Zeitungsausgabenindex

Anforderungen

Der Zeitungsausgabenindex bedient die folgenden Use cases:

  1. Die Suche nach Zeitungsausgaben: Anhand der Nutzereingabe werden Zeitungsausgaben gesucht und in einer Liste dargestellt. Die Suchergebnisliste enthält den Titel der Zeitung, das Datum und ein Vorschaubild der Ausgabe sowie ein Textsnippet mit dem gefundenen Suchbegriff. Desweiteren wird die Anzahl der Treffer in der Ausgabe angezeigt. Die Suchergebnisse müssen sich mit Hilfe von Facettenwerte weiter einschränken lassen.
  2. Die Suche über den Erscheinungstermin (Facetten für Jahr und Datum) 
  3. Die Suche innerhalb einer Ausgabe: Anhand der Nutzereingabe wird innerhalb einer Zeitungsausgabe gesucht. Die Trefferliste enthält neben einer Referenz auf die Seite Textsnippets mit den gefundenen Suchbegriffen und Informationen wo auf der gescannten Seite der Suchbegriff zu finden ist. 

Datenquelle

Die primäre Datenquelle für diesen Index ist die in Cassandra gespeicherte Outbox, also das Transformationsergebnis. Dieses wird von der Newspaper-Spark-App eingelesen, aufbereitet, mit Daten aus dem ZDB Index ergänzt und in den Index geschrieben.

Schema

Dieser Index arbeitet mit Nested Documents um sowohl die Zeitungsausgaben als auch die Einzelseiten der Ausgaben zu speichern. Die Menge der im Schema definierten Felder enthält also die für die Ausgaben so wie auch die für die Einzelseiten.

Zeitungsausgaben-Index schema.xml
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="zeitungsausgaben-index" version="1.4">
   
   <similarity class="org.apache.lucene.search.similarities.ClassicSimilarity"/>
   
   <types>

     <fieldType name="text_ocr" class="solr.TextField" storeOffsetsWithPositions="true" termVectors="true">
       <analyzer>
           <!-- Strip away the XML/HTML tags to arrive at a plaintext version of the OCR and do some other clean-up -->
           <charFilter class="de.digitalcollections.solrocr.formats.alto.AltoCharFilterFactory" />
           <!-- rest of your analyzer chain -->
           <tokenizer class="solr.WhitespaceTokenizerFactory" />
           <filter class="solr.LowerCaseFilterFactory" />
       </analyzer>
     </fieldType>   
     <fieldType name="string" class="solr.TextField" sortMissingLast="true" omitNorms="true">
       <analyzer type="index">
         <!--<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" />-->
         <tokenizer class="solr.WhitespaceTokenizerFactory" />
         <filter class="solr.LowerCaseFilterFactory" />
         <filter class="solr.ShingleFilterFactory" maxShingleSize="4" outputUnigrams="true" />
       </analyzer>
     </fieldType>
     <fieldType name="float" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
     <fieldType name="long" class="solr.TrieLongField" docValues="true" precisionStep="0" positionIncrementGap="0" />
     <fieldType name="issue_date" class="solr.DateRangeField" sortMissingLast="true" omitNorms="true" /> 
     <fieldType name="nest_path" class="solr.NestPathField" />
   </types>

   <fields>
      <!-- as this index is used to store nested documents the list of fields contains the fields used in the parent documents as well as the child documents. 
           Therefore it also declares a lot of field not required even though they might be required semantically for one of the document types. -->
 
      <!-- required by Solr to be able to store nested documents -->	
      <field name="_root_" type="string" indexed="true" stored="false"/> 
 
      <!-- filled automatically by Solr -->
      <field name="_nest_path_" type="nest_path" stored="true" />
      <field name="_nest_parent_" type="string" indexed="true" stored="true"/>

      <!-- for issues: used to store the ddb id of the newspaper issue
           for pages: used to store a unique identifier for the page. -->
      <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
 
      <!-- for issues: used to store a reference to the newspaper. -->
      <field name="zdb_id" type="string" indexed="true" stored="true" required="false" multiValued="false"/>
 
	  <!-- for issues: used to store the title of the newspaper -->    
      <field name="paper_title" type="string" indexed="true" stored="true" required="false" multiValued="false"/>
      
      <!-- for issues: the day of the week the issue was published - allows searching for e.g. all issues published on a Thursday --> 
      <field name="publication_day" type="string" indexed="true" stored="true" required="false" multiValued="false"/>
 
      <!-- for issues: the date the issue was published --> 
      <field name="publication_date" type="newspaper_date" indexed="true" stored="true" required="false" multiValued="false"/>
 
      <!-- for issues: the year the issue was published - required for facet search -->
      <field name="publication_date" type="newspaper_date" indexed="true" stored="true" required="false" multiValued="false"/>
 
      <!-- for issues: the date the issue was ingested --> 
      <field name="ingest_date" type="tdate" indexed="true" stored="true" required="false" multiValued="false"/>

      
      <field name="page" type="string" indexed="true" stored="true" multiValued="true" />
      <field name="page.number" type="long" indexed="true" stored="true"/>
      <field name="page.fulltext" type="text_ocr" indexed="true" stored="true" />

      <!--<field name="fulltext.page" type="string" indexed="true" stored="true" />-->
      <field name="provider" type="string" indexed="true" stored="true" required="false" multiValued="false"/>
      <field name="language" type="string" indexed="true" stored="true" required="false" multiValued="false"/>
      <field name="place_of_distribution" type="string" indexed="true" stored="true" required="false" multiValued="false"/>
      <field name="preview_reference" type="string" indexed="true" stored="true" required="false" multiValued="false"/>

      <field name="_version_" type="long" indexed="false" stored="false" multiValued="false" docValues="true" />
      <!--<field name="ocr_text" type="text_ocr" indexed="true" stored="true" />-->
   </fields>

   <!-- Field to use to determine and enforce document uniqueness.
      Unless this field is marked with required="false", it will be a required field
   -->
   <uniqueKey>id</uniqueKey>

</schema>


 
 
 
 

 

Besonderheiten

Dieser Index benutzt das SOLR-OCR-Plugin des MDZ um die Volltexte und inkl. der Wortpositionen aus den gelieferten ALTO Dateien zu indexieren. 

 

Beispiel-Queries zum Bedienen der Anforderungen aus dem Klickdummy

https://xd.adobe.com/view/e385a318-37bf-4ea7-56d8-2774adbf7d11-95b4/

 

 

  • Suchergebnisseite

    • Suchergebnisse: 
      http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=issuefulltext%3AStadt%20OR%20paper_title%3AStadt&hl=on&fl=id,paper_title,publication_date,thumbnail,[child%20limit=1]&hl.fl=issuefulltext&hl.snippets=1000&hl.maxAnalyzedChars=10000000
      - das Vorhandensein von 
      "_childDocuments_" sagt ob die Ausgabe Volltexte hat. 
      - An Anzahl der Snippets gibt die Anzahl der Treffer in der Ausgabe. Anzuzeigen ist nur das erste Snippet, sofern vorhanden. 
    • Zeitraum - Werte für das Diagramm und Anfangs-/Endjahr: 
      http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=issuefulltext%3AStadt%20OR%20paper_title%3AStadt&rows=0&facet=on&facet.field=publication_year
    • Zeitung - Listeneinträge: 
      http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=issuefulltext%3AStadt%20OR%20paper_title%3AStadt&rows=0&facet=on&facet.field=paper_title_fct&facet.mincount=1
    • Verbreitungsort - Listeneinträge: 
      http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=issuefulltext%3AStadt%20OR%20paper_title%3AStadt&rows=0&facet=on&facet.field=place_of_distribution&facet.mincount=1
    • Sprache - Listeneinträge: 
      http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=issuefulltext%3AStadt%20OR%20paper_title%3AStadt&rows=0&facet=on&facet.field=language&facet.mincount=1 (Ergebnisse sind ISO-639-2 Codes)

  • Suche nach Erscheinungstermin:(tick)
    http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?facet.field=publication_year&facet=on&q=*%3A*&rows=0

  • Jahreskalender: (tick)
    http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=publication_year:1929&facet.range=publication_date&facet=true&facet.range.start=1929-01-01T00:00:00Z/DAY&facet.range.end=1930-01-01T00:00:00Z/DAY&facet.range.gap=%2B1DAY&rows=0


  • Treffer nach Datum: (tick)
    • Ergebnisliste: http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=publication_date:1929-01-10&fl=*,[child%20limit=1]


  • Zeitungsseite - Gesamtansicht
    • graue Box: http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper/select?q=id:2803990-7
    • Verfügbare Ausgaben: http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?facet.field=publication_year&facet=on&q=zdb_id:2803990-7&rows=0
    • Vorgeschlagene Ausgaben dieser Zeitung: Randomisierte Ausgaben der gegebenen Zeitung: http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=zdb_id:2803990-7&sort=random_1234%20desc
      wobei 1234 durch einen beliebigen zufälligen Seed zu ersetzen ist (evtl. aktueller Timestamp).

 

  • Zeitungsseite - Kalender
    • graue Box: siehe "Zeitungsseite - Gesamtansicht 1 → graue Box"
    • Verfügbare Ausgaben: http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=publication_year:1929%20AND%20zdb_id:2728009-3&facet.range=publication_date&facet=on&facet.range.start=1929-01-01T00:00:00Z/DAY&facet.range.end=1930-01-01T00:00:00Z/DAY&facet.range.gap=%2B1DAY&rows=0


  • Suche nach Ort
    • Liste der Verbreitungsorte (links): http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper/select?q=+hasLoadedIssues:true%20+location:d*&facet.prefix:d&facet=on&facet.field=location&facet.sort=index&rows=0&facet.mincount=1
    • Ergebnisliste:
      • Bei angeklicktem Buchstaben: http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper/select?q=location:D* 
      • (Bei angeklicktem Ortsnamen: http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q=place_of_distribution:Dresden - nicht benötigt) 

  • Suche nach Titel
    • Ergebnisliste nach Anfangsbuchstaben: http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper/select?q=+hasLoadedIssues:true%20+sort.title:A*&sort=sort.title%20asc

 

  • Objektseite Suchen (DFG Viewer)
    • Volltext Suche innerhalb einer Ausgabe: /select?hl.ocr.fl=page.fulltext&hl=true&fl=id,page.number&q=+{!child%20of=%27id:4175160268881036%27}%20+page.fulltext:%22Fernsprecher%22

 

Beispiel-Queries zum Bedienen der Anforderungen des Ingest-Prozesses

  • sind für eine Zeitung (zdb-id) Volltexte geladen? 

    http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q={!parent which='zdb_id:"2728009-3"'}pagefulltext:*     (Beispiel mit Treffern) 

    http://ddb-di-vm05.fiz-karlsruhe.de:8183/solr/newspaper-issues/select?q={!parent which='zdb_id:"809452-9"'}pagefulltext:*       (Beispiel ohne Treffer)

 

 

 

 

  • No labels