Què és l’índex invertit? És ben conegut que cal crear índexs per implementar cerques eficients. Quina diferència hi ha entre índex i índex invertit, i com es construeix un índex invertit?


Resposta 1:

Índex invertit

La cerca elàstica utilitza una estructura anomenada índex invertit, que està dissenyada per permetre cerques de text complet molt ràpides. Un índex invertit consisteix en una llista de totes les paraules úniques que apareixen en qualsevol document i, per a cada paraula, una llista dels documents en què apareix.

Per exemple, diguem que tenim dos documents, cadascun amb un camp de contingut que conté el següent:

  1. La guineu bruna ràpida va saltar sobre el gos mandrós

Per crear un índex invertit, primer dividim el camp de contingut de cada document en paraules separades (que anomenem termes o fitxes), creem una llista ordenada de tots els termes únics i, a continuació, enumerem en quin document apareix cada terme. El resultat sembla una cosa així:

Terme Doc_1 Doc_2
-------------------------
Ràpid | | X
Els | X |
marró | X | X
gos | X |
gossos | | X
guineu | X |
guineus | | X
a | | X
va saltar | X |
mandrós | X | X
salt | | X
més de | X | X
ràpid | X |
estiu | | X
els | X |
------------------------

Ara, si volem cercar un marró ràpid, només hem de trobar els documents en què apareix cada terme:

Terme Doc_1 Doc_2
-------------------------
marró | X | X
ràpid | X |
------------------------
Total | 2 | 1

Tots dos documents coincideixen, però el primer document té més coincidències que el segon. Si apliquem un algorisme de similitud ingènua que només compti el nombre de termes coincidents, podem dir que el primer document és una concordança millor –és més rellevant per a la nostra consulta– que el segon document.

Però hi ha alguns problemes amb el nostre índex invertit actual:

  • Ràpid i ràpid apareixen com a termes separats, mentre que l’usuari probablement pensa en ells com el mateix word.fox i les guineus són força semblants, com ho són els gossos i els gossos; Comparteixen la mateixa paraula arrel.jumped i salten, mentre que no de la mateixa paraula arrel, tenen un significat similar. Són sinònims.

Amb l'índex precedent, la cerca de la guineu + Quick + no coincidiria amb cap document. (Recordeu, un precedent + significa que la paraula ha d'estar present.) Tant el terme Quick com el terme fox han d'estar al mateix document per satisfer la consulta, però el primer document conté volpe ràpida i el segon document conté Quick. guineus.

El nostre usuari podria esperar que ambdós documents coincideixin amb la consulta. Podem fer-ho millor.

Si normalitzem els termes en un format estàndard, podem trobar documents que continguin termes que no siguin exactament els mateixos que l’usuari sol·licitat, però que siguin prou semblants perquè siguin rellevants. Per exemple:

  • El ràpid es pot reduir per convertir-se en quick.foxes, es pot reduir a la seva forma arrel, per convertir-se en guineu. De la mateixa manera, els gossos poden ser derivats de dog.jumped i salt són sinònims i es poden indexar com només el salt de terme.

Ara l'índex sembla:

Terme Doc_1 Doc_2
-------------------------
marró | X | X
gos | X | X
guineu | X | X
a | | X
saltar | X | X
mandrós | X | X
més de | X | X
ràpid | X | X
estiu | | X
els | X | X
------------------------

Però encara no hi som La nostra cerca de + ràpida + guineu encara fallaria, ja que ja no tenim el terme exacte Quick al nostre índex. Tanmateix, si apliquéssim les mateixes regles de normalització que vam utilitzar al camp de contingut a la nostra cadena de consulta, es convertiria en una consulta per a + quick + fox, que coincidiria amb els dos documents!

Nota: - Això és molt important. Només podeu trobar termes que existeixen al vostre índex, de manera que tant el text indexat com la cadena de consulta s’han de normalitzar en el mateix formulari.

Referència: La Guia Definitiva [2.x] | Elàstic


Resposta 2:

En paraules simples, es tracta d’un hashmap com l’estructura de dades que us dirigeix ​​des d’una paraula a un document o a una pàgina web.

Mirem el problema des d’una altra direcció. Hi ha milions de documents, pàgines web o imatges que puguem haver de recuperar més endavant. Per ajudar-vos més a la vostra intuïció sobre la indexació i la recuperació de la informació que la utilitza, us recordaré que heu vist índex invertit anteriorment.

Aquest és un exemple d'algun llibre de text aleatori. Si necessiteu informació sobre algun tema, diguem-ne, energies d’activació, obrireu l’índex i esbrineu si aquesta paraula. L’índex invertit us indicarà els números de pàgina on s’explica aquesta paraula en un gran gruix de mil pàgines.

Tu veus! Si haguéssiu de fer una cerca lineal regular, trigareu hores a arribar a la pàgina. Però ara amb prou feines eren qüestions de segons.

Què és el que sembla un índex regular?

Per descomptat, just al contrari. Assigna el número de pàgina als temes. I podeu dir fàcilment que no són tan útils en l’àmbit de la cerca i l’extracció d’informació. (Potser tenen molta sort en un altre lloc). En el cas de la cerca a Facebook, s’utilitzen per tal de classificar (puntuar) per obtenir els resultats més rellevants.

Com crear índex invertit La creació d'un índex invertit per mantenir qualsevol tipus de sistema de cerca requereix que realitzeu una sèrie de passos mentre analitzeu les pàgines o els documents. Anem a la pràctica del nostre propi cercador.

Vull crear un motor de cerca de tots els documents del meu ordinador. Sé el que busco. Així que executaré un programa que recorrerà l’arbre sencer dels meus discos durs i recopilaré les pàgines que vulgui. Sé que els fitxers mp3 i jpeg no serveixen per a mi. Demanaré al meu programa recuperar els fitxers txt, doc i pdf. Així doncs, un cop obtingut un document, passo al següent pas.

1. Obtenir el document El treball és realment senzill si rebo un fitxer de text (.txt). Però si es tractés d’un document o pdf, haureu d’analitzar-los mitjançant algunes biblioteques per recuperar el seu text. Diguem que tinc èxit en llegir el text. Què després?

2. Eliminació de l'aturada de paraulesConsidereu l'últim paràgraf. Quines eren les paraules importants que podríem estar buscant? "text", "biblioteques", "doc", "pdf", "recuperar", "reeixir". Però la majoria de les altres paraules són només un malbaratament. Denominem les paraules que es produeixen més com a "paraules d'aturada" i les eliminem de manera que no rebin índexs per a paraules com "jo", "el", "nosaltres", "és", "an". En ús habitual, tenim una llista de 500-1000 paraules. Però pot variar segons l’ús.

3. La tija a l’arrel WordThen arriba Stemming. Ara, sempre que vull cercar "recuperació", vull veure un document que tingui informació sobre aquest tema. Però la paraula present al document s'anomena "recuperar" en lloc de "recuperació". Per relacionar les dues paraules, tallaré una part de cada paraula que he llegit per tal de poder obtenir la "paraula arrel". Recuperació es pot convertir en "recuperació". Així també "recuperarà". Hem d’estar segurs de les normes que utilitzem per tallar les paraules. Hi ha eines estàndard per realitzar-ho, com ara "Porter Stemmer". Podeu jugar aquí amb un porter de porter: Porter Stemmer Online

4. Registre els documents d'identificació. Ara, prepareu-vos per a la tasca principal: Indexing.Every document tinc un identificador de document únic. Quan em trobo amb una paraula sense parar que s’explica ara, la guardo a la meva memòria en el formulari: retriev ==> docID104007

Si tinc la mateixa paraula en algun altre document, potser escriberetriev ==> docID104007retriev ==> docID154033

Però molt aviat els he combinat en un sol listretriev ==> docID104007 i docID154033

Puc millorar encara més escrivint quantes temporitzacions es va produir la paraula al document de manera que puguem classificar els documents més importants mentre recuperem. retriev ==> docID104007 | 5 | & docID154033 | 2 |

5. Combina i emmagatzema els termes. Finalment, els guardem tots en fitxers de disc. És fantàstic si ordenem l’índex en funció de les paraules per a una recuperació ràpida i senzilla.

Tot això, òbviament, necessita unes estructures de dades específiques que simplifiquin la vostra feina.

Es poden crear índexs secundaris més per millorar la recuperació. També hi ha molts problemes relacionats amb la classificació.

Espero que això us expliqui com es creen índexs invertits. Si voleu llegir més, podeu referir un llibre impressionant Introducció a la recuperació d'informació escrit per Chris Manning, disponible en línia de forma gratuïta.