Synonyymit Elasticsearch (HowTo)

pian sen jälkeen, kun aloitat matkasi hakuun, itse asiassa tämä on täysin riippumaton tietystä hakukoneesta, joudut tilanteeseen, jossa joudut käsittelemään sanoja, joilla on sama merkitys.

esimerkiksi jos annat käyttäjien etsiä sijainnin mukaan, jotkut saattavat viitata Yhdistyneeseen kuningaskuntaan nimellä UK, tai Amerikan Yhdysvaltoihin nimellä USA, mutta tämä tilanne ei rajoitu paikkaan, asioita kuten PhD kutsutaan usein myös tohtoriksi tai tohtoriksi.

ensi vaiheessa kannattaa selvittää, onko tilanteessa yksi sana synonyymi vai monisana, sillä ei ole mitään merkityksetöntä Lucene-pohjaisten hakujärjestelmien kannalta. Historiallisesti Lucene on käsitellyt usean sanan synonyymit erittäin huono, periaatteessa sinun piti rakentaa ne indeksointiaika, myöhemmin luettelo ongelmista. Jos olet utelias, seuraa tätä sarjaa tulevia virkoja.

jos sinulla on nälkäinen tekninen mieli, tässä on useita sinulle tärkeitä asioita ja linkkejä:

tässä viestissä keskitymme siihen, miten tämä ratkaistaan Elasticsearchissa kyselyaikaan, jatkoviestissä käsittelemme indeksointiaikaa synonyymit ja niiden hyvät ja huonot puolet.

synonyymejä käsitellään Elasticsearchissa ja Solr: ssä osana kyselyn/indeksoinnin muunnosketjua. Jos et tunne elasticsearchin reikien kartoituksia ja analysointiosia, suosittelen, että ennen kuin jatkat, otat kiinni nämä osat, koska aiomme keskittyä tässä osassa niihin voimakkaasti.

jos kyseessä on yksittäinen sana tai token-pohjainen synonyymi, käytämme Elasticsearchissa synonyymi token-suodatinta. Ensimmäinen askel olisi laajentaa nykyistä analyysiketjua kanssa synonym_token_filter, kartoitus määritelmä pitäisi näyttää jotain:

Elasticsearch pyytää uuden indeksin asettamista analyysiketjuun synonyymisuodattimella.

kuvasta näkyy, että määrittelimme uuden suodattimen nimeltä jobs_synonym_filter, joka on tyypiltään synonyymi ja sisältää kaksi synonyymin määritelmää. Kun olet määrittänyt suodattimen, sinun tulee sisällyttää se analysaattorin sisään, Tämä on mitä näet edellisen kuvan toisessa asetuksessa.

tästä lähtien voimme käyttää aiemmin määriteltyä analysaattoria tekstin käsittelyyn, muista kuten minkä tahansa muun tulon, indeksin tai kyselyajan kohdalla, Elasticsearch käyttää valittua ketjua murtaakseen sen tokeneissa, suodattaakseen ja rikastuttaakseen sitä ennen käänteisen indeksin tarkistamista.

Elasticsearch antaa meille standarditavan tarkistaa, miten analysaattorit käyttäytyvät, joten meidän ei ole pakko käyttää tarkistaa niitä indeksoinnin tai kyselyjen aikana. Jos haluat tarkistaa, miten analysaattori käyttäytyy, voit käyttää päätepistettä _analysoida.

esimerkiksi jos pyrimme tarkistamaan aiemmin määritellyn analysaattorin käyttäytymistä, saatamme ajatella paria uskottavaa sanaa, PhD: tä ja Cop: ia, lauseessa ne kääntävät seuraavasti:

  • PhD John Doe → Doctor John Doe
  • Cop John Doe → Police John Doe

seuraavassa kuvassa näemme esimerkin siitä, miten tämä kulkee Elasticsearchin sisällä, Näemme miten eri poletit syntyvät, myös tyypin. Tyyppi on synonyymi, kun yksi tokeneista on luotu synonyymin taulukosta.

tarkistetaan uusi mukautettu analysaattori ja miten se käsittelee eri poletteja

kuitenkin tässä esimerkissä voidaan alkaa nähdä yksi ongelma yhden tunnuksen synonyymit, PhD kartat lääkärille, kuitenkin lääkäri ei aina tarkoita vain PhD, voi tarkoittaa myös lääkäri, tai lääkäri.

voisimme harkita tämän synonyymin käsittelyä samalla rakenteella, mutta tämä ei ole mahdollista, koska analyysiketju tuottaa yhden Tokenin jokaista sanaa kohti, jolloin edellisen synonyymisuodattimen tehtävä ei onnistu. Tarkista seuraava kuva,

miten lääkäri prosessoidaan aiemmin määritellyllä synonyymisuodattimella

näet, miten sana lääkäri ei prosessoi oikein määriteltyjen synonyymien kanssa. Tähän on olemassa ratkaisu, multi sana synonyymi suodatin.

monen sanan synonyymit

tämän jutun oikea käsittely Lucene-hakukoneperheen alla on tavallaan vaikeaa, saatat ihmetellä miksi?, tämä johtuu siitä, että Lucene yleinen strategia on murtaa tekstiä yksittäisiin poletteihin.

on olemassa muutamia strategioita tämän tilanteen ratkaisemiseksi, esimerkiksi:

  • usean sanan synonyymien vähentäminen kanoniseen muotoon.
  • yhdistä toisiinsa liittyvät tokenit yhteen ja rakenna niistä synonyymit.
  • käyttäen vasta luotua synonyymigrafisuodatinta.

emme kata tässä merkintä Kaksi ensimmäistä, Tarkista tulevia virkoja lisätietoja niistä. Tässä kohdassa keskitymme synonyymi graph suodatin, enemmän smart token suodatin Lucene pystyy käsittelemään ei vain tokens,mutta yleinen suhde sanojen.

jos haluat käyttää synonyymigrafiikkasuodatinta, sinun tulee ilmoittaa se samalla tavalla kuin edellisessä osassa esitelty suodin, sen tulee näyttää suunnilleen seuraavan kuvan kaltaiselta:

rakenna uusi suodin synonyymigraafisuodattimen perusteella (synonyymit määritelty suoraan pyynnössä)

tässä esimerkissä määrittelimme kolme synonyymiä suoraan analyysiketjun luomisessa, on kuitenkin parempi määrittää synonyymien luettelo käyttäen asetustiedostoa. Synonyymit voidaan syöttää käyttämällä Solr / Lucene-tai WordNet-muotoa.

jos et ole kuullut Wordnetistä, kannattaa tarkistaa!. WordNet on suuri sanasto tietokanta Englanti, substantiivit, verbit, adjektiivi, adverbit on ryhmitelty joukko synonyymejä, ja paljon muuta. Tällaiset leksikaaliset tietokannat ovat erittäin hyödyllisiä, kun yrität kehittää rikkaampaa ymmärrystä tekstistä. Vastaavia käsitteitä on muillakin kielillä, kuten Saksalla Germanetin kanssa.

seuraavassa parissa kuvassa näet, miten tämä uusi synonyymi toimii,

lääkärin tarkistaminen uudella synonyymisuodattimella

tarkistamalla System Enginer uudella synonyymisuodattimella

katso, miten Elasticsearch oli tarpeeksi fiksu selvittääkseen, että miten toimia yhdellä sanalla synonyymi, kuten lääkäri, mutta myös miten käsitellä järjestelmäinsinööri.

mutta kuten espanjalaiset sanovat, “no es oro todo lo que reluce” eli englanniksi, kaikki ei tule olemaan helppoa. On olemassa muutamia suosituksia aiomme explorer myös muita merkintöjä, mutta pähkinänkuoressa, jos käytät synonyymejä Elasticsearch mieluummin frase_query yli query_string, näet seuraavissa kuvissa, miten ne toimivat.

kyselyn virheenetsintä täsmäyslauseella

kyselyn virheenetsintä kyselymerkkijonolla

voit nähdä, miten viimeinen kuva, joka käyttää query_stringiä, ei luo asianmukaisia kyselytermejä oikeiden dokumenttien löytämiseksi.

kertaus

tässä kohdassa olemme esittäneet olemassa olevat tavat käsitellä synonyymejä Elasticsearchissa. Alkaen yhden sanan / token synonyymit, tämä viesti esitteli miksi ja miten synonyymit toimivat Lucene-pohjainen hakukone, jossa keskitytään erityisesti Elasticsearch.

tulevat merkinnät kertaavat jokaisen ratkaisun hyvät ja huonot puolet, mutta on jo olemassa tärkeä Vinkki, Jos käytät monisanaisia synonyymejä, keskity fraasikyselyihin.

artikkeli päättyy nopeasti monisanaisten synonyymien esittelyyn ja siihen, miten ne voidaan setupoida.

Vastaa

Sähköpostiosoitettasi ei julkaista.