ddionrails / steering

0 stars 0 forks source link

Gewichtung der Felder bei der Suche #12

Open hansendx opened 4 years ago

hansendx commented 4 years ago

Variablensuche:

Fragensuche:

Topicsuche:

Topicsuche:

Publikationssuche:

Basissuche:

kwenzig commented 4 years ago

@hansendx macht für die nächste Sitzung pro Suchtab eine Liste mit Metadatenfelder, die in die Suche eingehen. Diese Metadatenfelder können/sollten dann ein Gewicht bekommen.

kwenzig commented 4 years ago

Aktuelle Veränderung der Gewichtung ist nicht dauerhaft implementiert.

hansendx commented 4 years ago

Variablensuche:

Fragensuche:

Topicsuche:

Topicsuche:

Publikationssuche:

Basissuche:

isieber commented 4 years ago

Ein offener Punkt, die Aufgabe/Anfrange, war, den benannten Feldern, von @hansendx, siehe oben, Werte für einen 'boost' zur Priosierung der Suche zuzuweisen.

Zum Verstehen und Weitergeben habe ich versucht alles tabellarisch Aufzubereiten, so gut es mir möglich war. Aber es gibt noch einiges zu tun:

Ich konnte nicht alles zuordnen, deshalb bitte ich um mehr Informationen und/oder Ergänzungen/Verbesserungen für die Darstellung.

Ich habe in der Spalte isieber noch nichts eingetragen, weil ich immer noch nicht weiß, was da korrekt einzutragen ist. Ich weiß nichts über den Wertebereich und was der Wert bewirken würde.

Tabelle aus Liste von @hansendx (s.o.)

usecase index_name field_name description type hansendx isieber kwenzig
Variablensuche name varname name 10 20
label Var label en short free text 10 10
label_de Var label de short free text 10 10
description ? ? 5 5
description_de ? ? 5 5
description_long ? ? 5 5
categories.labels Value Label en short free text 2 2
categories.labels_de Value Label de short free text 2 2
dataset Datafile name name 2? 10
------------------- ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Fragensuche name ? 20
label Questiontext en long free text 10
label_de Questiontext de long free text 10
description ? ? 5
description_de ? ? 5
items.en ? ?
items.de ? ?
------------------- ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Topicsuche name Topic-key? arbitrary name?
label TopicTitle/heading en short free text 10
label_de TopicTitle/heading de short free text 10
description ? ? 5
description_de ? ? 5
------------------- ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Publikationssuche name SOEPlit No. number
title Pub Title (short) free text 10
author authors names (short) free text 20
abstract Text very long free text 5
cite complete citation free text 10
doi URL URL
------------------- ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Basissuche in_all_indices name ? 20
label Text en short free text 10
label_de Text de short free text 10
description ? ? 5
description_de ? ? 5
------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Publikationsindex title Pub Title (short) free text 10
author authors names (short) free text 20
abstract Text very long free text 5
cite complete citation free text 10
doi URL URL
------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
FragenIndex items.en ? ?
items.de ? ?
------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Variablenindex description_long ? ? 5
categories.labels Value Label en short free text 10
categories.labels_de Var label de short free text 10
dataset Datafile name name 20
urahm commented 4 years ago

Hi, zu publications kann ich beitragen:

`

usecase index_name field_name description type hansendx isieber kwenzig
Variablensuche   name varname name 10    
    label Var label en short free text 10    
    label_de Var label de short free text 10    
    description ? ? 5    
    description_de ? ? 5    
    description_long ? ? 5    
    categories.labels Value Label en short free text 2    
    categories.labels_de Value Label de short free text 2    
    dataset Datafile name name 2?    
------------------- ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Fragensuche   name ?        
    label Questiontext en long free text      
    label_de Questiontext de long free text      
    description ? ?      
    description_de ? ?      
    items.en ? ?      
    items.de ? ?      
------------------- ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Topicsuche   name Topic-key? arbitrary name?      
    label TopicTitle/heading en short free text      
    label_de TopicTitle/heading de short free text      
    description ? ?      
    description_de ? ?      
------------------- ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Publikationssuche   name SOEPlit No. number      
    title Pub Title (short) free text      
    author authors names (short) free text      
    abstract Text very long free text      
    cite complete citation free text      
    doi URL URL      
------------------- ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
Basissuche in_all_indices name ?        
    label Text en short free text      
    label_de Text de short free text      
    description ? ?      
    description_de ? ?      
  ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
  Publikationsindex title Pub Title (short) free text      
    author authors names (short) free text      
    abstract Text very long free text      
    cite ? ?      
    doi URL URL      
  ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
  FragenIndex items.en ? ?      
    items.de ? ?      
  ------------------- ---------------------- ----------------------- --------------------- ------------ ----------- -----------
  Variablenindex description_long ? ?      
    categories.labels Value Label en short free text      
    categories.labels_de Var label de short free text      
    dataset Datafile name name

` name ist für die Suche irrelevant (wird nicht ausgespielt, sollte ganz rausgenommen werden?) cite enthält die Felder author, title, doi und zusätzlich journal bzw. Buchtitel oder DP-Reihe doi ist in der Ursprungsdatenbank keine URL (soweit ich weiß), für Suche und Index irrelevant

hansendx commented 4 years ago

Ich habe in der Spalte isieber noch nichts eingetragen, weil ich immer noch nicht weiß, was da korrekt einzutragen ist. Ich weiß nichts über den Wertebereich und was der Wert bewirken würde.

  • TODO: See eg. Scoring Example

    • score
    • Term frequency
    • Inverse document frequency (idf)
    • Coordination (coord)
    • Field length normalization (norm)
    • Query normalization (queryNorm)
    • Index boost: This is a percentage or absolute number used to boost any field at index time.
    • Query boost: This is a percentage or absolute number that can be used to boost any query clause at query time.

Die Formel hinter dem Link im Detail zu verstehen ist nicht unbedingt relevant. Trotzdem als einschub: Die wichtigsten bestandteile wären hier term frequency und inverse document frequency. Durch die term frequency wird ein Objekt relevanter je öfter es einen Suchterm enthält und durch die inverse Dokument frequency wird ein Term als weniger wichtig für die relevanz einschätzung gewertet, wenn er in vielen Objekten im Korpus auftaucht.

Ich bin mir auch nicht sicher ob sie so, wie sie dort steht angewendet wird.

Die Dokumentation dazu lässt leider zu wünschen übrig. Ich habe mal in Reactivesearch selbst rein geschaut und ausfindig gemacht, was mit dem field weight überhaupt passiert:

https://github.com/appbaseio/reactivesearch/blob/aeb82f8aa82e5cdb09c0bbe214f7d6e49a8b18bc/packages/native/src/components/search/DataSearch.js#L170

Das Query, das dort erzeugt wird ist hier dokumentiert:

https://www.elastic.co/guide/en/elasticsearch/reference/7.5/query-dsl-multi-match-query.html

Leider steht dort auch nur:

"Individual fields can be boosted with the caret (^) notation:"

GET /_search
{
  "query": {
    "multi_match" : {
      "query" : "this is a test",
      "fields" : [ "subject^3", "message" ] 
    }
  }
}

und "The subject field is three times as important as the message field."

Von dieser Aussage her würde ich annehmen, dass der boost wert mit dem eigentlichen score multipliziert wird.

Der default Wert scheint 1 zu sein. Zahlen zwischen 1.0 und 0.0 können auch vergeben werden, diese drücken die relevanz von Feldern dann nach unten.

hansendx commented 4 years ago

Die Felder die ich da auf 2 gesetzt habe könnte man eigentlich auch auf 1 belassen. Ist nur unnötige rechenarbeit, wenn es keine Felder gibt die niedriger geboostet werden.