(Message /home/hks/Mail/inbox:1566)
Return-Path: maints-owner@nic.funet.fi
Return-Path: <maints-owner@nic.funet.fi>
Delivery-Date: Thu, 2 Dec 1993 12:32:28 +0200
Received: from ftp.funet.fi by funet.fi with SMTP (PP);
          Thu, 2 Dec 1993 12:32:26 +0200
Received: from laphroaig.cs.hut.fi (Ä130.233.192.94Å) by nic.funet.fi with SMTP 
          id <91743-8>; Thu, 2 Dec 1993 12:27:46 +0200
Received: by laphroaig.cs.hut.fi id AA04173 (5.65c8/HUTCS-C 1.3 
          for maints@ftp.funet.fi); Thu, 2 Dec 1993 12:27:42 +0200
Date: Thu, 2 Dec 1993 12:27:42 +0200
From: Hannu Aronsson <haa@cs.hut.fi>
Message-Id: <199312021027.AA04173@laphroaig.cs.hut.fi>
To: maints@ftp.funet.fi
Subject: Nicin fileiden indeksointi & haku -- lue ja kommentoi kokouksessa!
Organization: Helsinki University of Technology, Finland



Heips,

Olemme tässä jo kauan yrittäneet saada aikaan Nicciin jonkinlaista
tiedostojen indeksointiviritystä. Tässä on yksi ehdotus, jota on
kehitelty aiempien kokemusten pohjalta.

Olisi kiva jo aiheesta kiinnostuneet lukisivat tekstin läpi, jotta
voitaisiin sitten Maints-kokouksessa keskustella asiasta tehokkaasti.
Jos sinulla ei ole aikaa lukea koko juttua, lue edes MOTTO: -kohdat.

Jos halutaan joku lyhyt "alustus" aiheesta kokouksessa, voin pitää
sellaisen.

terv//haa
--
Hannu Aronsson <haa@nic.funet.fi>   /pub/culture/japan archives at ftp.funet.fi
Hannu.Aronsson@cs.hut.fi            Helsinki University of Technology, Finland

------klip-----------klip-----------klip-----------klip-----------klip-----


	FTP.funet.fi:n tiedostojen indeksointi
	--------------------------------------
	ééFree-text searching with annotated files''

	Versio 0.2 931202 ähaa,kivinenå@cs.hut.fi

!HUOM! Tämä on alustava dokumentti, monet yksityiskohdat ovat vain
       ideoita, joita ei ole vielä mietitty loppuun. Kaikki kommentit
       tervetulleita.

1. ABSTRAKTI

Ftp-palvelijoissa on nykyään käytännössä "ääretön" määrä tiedostoja,
joiden organisointi mitenkään järkevästi on erittäin hankalaa.

Ongelma on vakava sekä arkiston ylläpidon (minne pitäisi tiedot
laittaa?) että käyttäjien kannalta (tieto ei löydy!).

UNIXin ja FTP:n hakemistopuuhun on myös erittäin hankala sijoittaa
tietoa joka kuuluisi luonteeltaan sopivasti moneen paikkaan, koska
jonkinlaisten symlinkkiviritysten ajan tasalla pitäminen on hankalaa.

MOTTO: Korvataan hankala hakemistorakenne vapaatekstihaulla
    tiedostojen tiedoista ja tiedostoihin liitetyistä selostuksista
    (annotaatioista).

1.0.1. TAVOITTEET

Käyttäjä haluaa
- Läytää aiheeseen liittyvät tiedostot nopeasti, helposti ja kaikki
  samalla
- Saada tietoonsa selostuksia (annotations) tiedostojen sisällöstä
  ja siitä mitä ko. ohjelma/paketti tekee, mitä se vaatii, ...
- Nähdä jo ennen suuren tiedoston hakemisto, mitä joku .tar tai .zip
  paketti sisältää

Ylläpidossa tarvitaan
- Järjestää tiedot järkevästi, niin että ne ovat ylläpidon kannalta
  hyvissä paikoissa.
- Helppoa tapaa luoda tiedostoille indeksitiedot (annotaatiot)
- Helppo tapaa mirror- yms virityksissä välittää indeksitiedot
  muualle -- tavoite olisi luoda standardi joka otettaisiin 
  käyttöön kaikkialla Internet ftp-arkistoissa.

Tarkoitus on luoda systeemi, missä pääasiallinen tiedon haku
tapahtuisi vapaalla tekstihaulla tiedostojen selostuksista, ei
enää yrittämällä löytää tietoa sekavista hakemistoista.

Hakemistorakenne säilytettäisiin kuitenkin ylläpidon, mirrorointien,
tiedon selailun ja yhteensopivuussyiden vuoksi.

1.1. PROTOTYYPIT

Erilaisia indeksointivirityksiä ja automaattisia README ja INDEX
fileiden generointia on kokeiltu jo jonkin aikaa FTP.funet.fi:ssä
haa:n (/pub/culture/japan) ja arl:in hakemistoissa (/pub/OS).

Seuraava on todettu:
- Tiedon ylläpidon ja syöttämisen pitää olle helppoa, muuten se
  jää tekemättä
- Homman pitää olla automaattinen, mahdollisimman vähän käsin tehtävää
  työtä
- Indeksitieto on kätevintä tallettaa yksittäisiin tiedostoihin, jotka
  ovat samassa hakemistossa oikean tiedoston kanssa, esim. file.ind, 
  koska tällöin tieto pysyy hyvin mukana (mv file* ../muualle/).
- Indeksitiedoston loppuosaksi olisi ehkä hyvä pelkkä : (mikä tahansa
  .jotain on jo jossain käytössä kuitenkin). Ehkä : luo ongelmia
  joissain ympäristöissä (Mac directory separator)?

1.2. AIEMMAT POHDINNAT JA KESKUSTELUT

Seuraavaa on tullut esille keskusteluissa:
- Keywordien pitää olla valittu jostain fiksatusta setistä keywordejä,
  vapaavalintaiset keywordit ei toimi. Samoja keywordejä pitäisi
  sitten käyttää kaikilla eri osaalueilla, ei esim niin kuin nyt
  hakemistohierarkian kanssa (msdos alueella on communications, unix,
  mac, atari alueella comm, mac ja atari alueella editor, unix ja
  msdos alueella editors jne)
- Tärkeintä tulevaisuudessa on tarjota palvelut mukavasti Gopherin, 
  WAISin ja WWW:n kaltaisten palvelujen kautta.
- Infopalvelujen pitäisi tarjota samat tiedot kuin mitä ftp:stäkin
  saa, eli esim tiedoston päivämäärä, koko jne. 
- FTP-käyttötapa tulee poistumaan, ja osa palveluista voidaan antaa
  backward-compatibilitynä quote find -komennon tyyliin myös ftp:n
  käyttäjille

1.3. MUUTA

Kun järjestelmä on saatu toimimaan, kirjoitetaan RFC sen tärkeistä
osista, annotaatiotiedoston formaatista jne. Tarkoitus ei ole sitoutua
mihinkään yksittäiseen toteutukseen, vaan standardoida annotaatioiden
esitysmuodot.

On tärkeää että saadaan kaikki FTP-ihmiset mukaan samanlaiseen
järjestelmään, vaikka pelkästään FTP.funet.fi:ssäkin olevana systeemi
olisi jo todella hyvä meidän kannalta.


2. TIEDOSTOJEN ETSIMINEN (KÄYTTÖLIITTYMÄ)

Kun vapaatekstihaku onnistuu keywordeista, selostuksista,
sisällysluetteloista, jne, niin tarvitaan yksinkertaisia
glue-koodinpätkiä eri palveluihin, jotka saavat asiat näkymään.

2.1. GOPHER

Tarjotaan Ftp.funet.fi:n gopherin päätasolla jotain seuraavaa:

	...
	3. About the free-text search capability of FTP.funet.fi <txt>
	4. How to use the free-text search at FTP.funet.fi <txt>
	5. Free-text-search files by keywords <?>
	6. Free-texx-search files by abstracts <?>
	7. Free-text-search files by contents listings <?>
	8. Free-text-search files by all information <?>
	...

Ja kun valitsee esim. 8:n, tulee kysymysboksi johon voi kirjoittaa
esim. "pc windows games action 3d", sitten etsitään aiheeseen sopivia
fileitä indeksistä (kestää noin sekunnin, riippumatta fileiden
määrästä NGS:n softalla), ja näytetään käyttäjälle jotain suunnilleen:

	1. Short descriptions of the 37 matches found, 52 lines <txt>
	1. Long overviews of the 37 matches found, 120 lines <txt>
	2. /pub/pc/tetris/3d/actiontetris.zip (123k) Information <txt>
	3. /pub/pc/tetris/3d/actiontetris.zip (123k) <ftp>
	4. /pub/pc/kukkuu/3d/actionkukkuu.zip (123k) Information <txt>
	5. /pub/pc/kukkuu/3d/actionkukkuu.zip (123k) <ftp>
	...

Josta käyttäjä voi sitten valita haluamansa, ja saa sen sitten
näkyviin (indeksitekstin) tai tiedoston siirrettyä itselleen.

2.2. WWW

Samaan tapaan kuin Gopher, tosin voidaan laittaa mukaan parempaa infoa
ja muotoilla asiat kauniimmin. Mukaan voisi laitta hyperlinkit paketin
sisällä olevaan readme:hin, kuvista ehkä pienet thumbnail-previewit
jne. hyödyllistä.

2.3. WAIS

Tämä systeemi korvaisi WAISin pääosin, ehkä emme tarvitsisi WAIS
liityntää. Gateway on tarpeen tullen helppo tehdä.

2.4. MUUT INFOPROTOKOLLAT JA TULEVAISUUS

Perustietokannan päälle on helppo rakentaa minkä tahansa
tietoprotokollan mukainen kysely/vastaus palvelin, joten
tulevaisuudessakaan ei pitäisi tulle ongelmia.

WWW tullee valtaamaan alaa, ja sillä voidaan tarpeen vaatiessa
liittää listauksiin esim. ikoneita, preview-kuvia, jne jne hienoa.
Tämä jopa onnistuu aika helposti, voidaan määritellä indeksifileeseen
lohkot --ICON-- ja --PREVIEW-- tms, joita ei indeksoida
vapaatekstitietokantaan mutta käytetään tiedon näyttämisessä.

MOTTO: Kaikki tiedonhakutavat tuettuja, mutta suunnataan antia
    johonkin Gopher/WWW tyyliseen.


3. TIEDOSTOJEN INDEKSITIETOJEN LUOMINEN JA FORMAATTI

3.1. INDEKSITIEDOSTON FORMAATTI

On ajateltu että indeksitiedosto olisi RFC-822 -tyylisessä
formaatissa, eli ensin header-osuudessa vakiotiedot ja sitten
bodyssä pitkä selostus ja sisällyslistaus .tar/.zip/...  tiedostosta,
yms. Header-osuuden kentät olisi vakioitu, jotkut kentät olisivat
pakollisia.

<<POHDITTAVAA>> Ehkä formaatin pitäisi olla sellainen, että
news-artikkelin headeri+johdanto osuus (ennen uuencode/binhex/...
kamaa) kelpaisi sellaisenaan indeksitiedostoksi? Toisaalta näissä on
usein aika kehnoa tietoa.

Vaatimuksia tiedostoformaatille on:
 - Asciimuotoinen, jotta helppo käsitellä kaikilla työkaluilla
 - Joku RFC822 tms olisi hyvä, valmiita kirjastoja yms.
 - Sisältää tietyt vakiotiedot (headerit) ja mahdollisuus pitkiinkin
   selostuksiin (body)
 - Tukee monikielisiä järjestelmiä, eli kaikki tekstitiedot pitää
   voida olla usealla kielellä, joista näytetään käyttäjälle se
   mitä halutaan. Englanninkielinen selostus vaadittaisiin aina,
   koska se on yleiskäyttöisin. Merkkisetit? MIME?
 - Periaatteessa voitaisiin tehdä paketti, missä alussa on annotaatio
   ja sitten lopussa itse tiedosto (joku File-starts-at: offset?)

Esimerkki indeksitiedostosta <<Tämä on todella prototyyppi,
pitää miettiä kokonaan uusiksi, joku proto hyvä olla pohjaksi
kuitenkin>>:

	Index-version: 1.0
	Filename: xyzzy13.tar.gz
	Filesize: 100000 55 223233   <<paketti, fileitä paketissa, avattuna>>
	Fileformat: unixtar gnuzip
	Program-name: xyzzy
	Program-version: 1.3
	Expiry-date: Aug 1 1994
	Short-description: The Xyzzy program is a great new
		emacs-lookalike.
	Short-description-FI: Xyzzy-ohjelma on hieno uusi emacsiakin
		hienompi editori.
	Keywords: unix c source editor gnu
	Long-description-separator: DESCRIPTION

	<<Default on --DESCRIPTION-->>
	Xyzzy is..... (long description)

	--DESCRIPTION-FI--
	Xyzzy on ohjelma joka ...

	--DESCRIPTION-SE--
	Xyzzy är en program, som ...

	--CONTENTS--
	Sisällysluettelo (gtar tzvf)

Englanninkielinen tieto vaadittaisiin aina, sen lisäksi voisi olla
muilla kielillä <<voidaan haluta käyttää MIME multipart formaattia?>>,
joka sitten sen kielisillä käyttäjillä voi overridetä englanninkielisen
tekstin.

3.2. INDEKSITIEDOSTON PAIKKA

Indeksitiedosto sijoitetaan samaan hakemistoon itse tiedoston kanssa,
ja indeksitiedoston nimi on filename:i (eli tiedoston nimen perään :i).
<<Tätä pitää miettiä kanssa, kommentteja eri käyttiksistä, miten
toimii?>>

Hakemistossa voi myös olla default-indeksi tiedosto, Default:i
<<tms>>, joka pätee tässä hakemistossa ja sen *alihakemistoissa*
oleviin tiedostoihin, joilla ei ole omaa indeksitiedostoa. 

Mahdollisesti tuossa default-indeksissä voidaan kertoa että tässä alla
on editoreita, muut oletustiedot voi ottaa hakemistoa ylempää, jolloin
sieltä ylempää voidaan sitten ottaa tieto siitä että nämä ovat msdos
editoreita ja alueen ylläpitäjien postiosoite on msdos@nic.funet.fi
jne.

3.3. KEYWORDS JA KEYWORD-SETS

Keywordsit luotaisiin ohjelmalla, joka näyttää listan valmiiksi
suunnitelluista keywordseistä, joista voi valita fileeseen sopivat
(siis useita by default).

MOTTO: Idea on se, että ei käytetä yksittäisiä keywordsejä, vaan
    ideana on tehdä haut keywords-joukkojen perusteella.

Esimerkki keywords-syöttö-ohjelmasta. <<Huom: keywordit on esimerkin
vuoksi>> pitää miettiä hyvä yhdelle 24x80 mahtuva setti keywordsejä.
Ehkä halutaa jonkin verran tarkempia, esim. jos kone on X, niin voi
spesifioida systeemivaatimukset tarkemmin ko. koneen termeillä tms.

------ascii----tty----------ascii----tty----------ascii----tty----
File: Xyzzy.tar.gz        Size: 100000/223233
                                                                      
SYSTEM     REQUIRES        TYPE OF THING  ARCHIVE CONTAINS        
10 Generic 20 Lots of RAM  30 game        40 binaries
11 UNIX    21 Lots of disk 31 application 41 source                  
12 PC/DOS  22 Lots of CPU  32 programming 42 documents                
13 PC/WIN  23 Special SW   33 engineering 43 ready-to-run            
14 Mac     24 Special HW   34 system sw   44 needs-work               
15 Amiga                   35 picture                                 
16 Atari                   36 music/sound                             
18 Other                                                            
                                                                      
JNEJNE     ETC                                                        
50 k-12                                                               
51 k-18                                                               
52 k-21                                                               
53 huume                                                              
                                                                      
Keywords--> 10 14 13 31 32 40 41 42 43 <<RET>>
------ascii----tty----------ascii----tty----------ascii----tty----

Keywords-kenttään heitetään aina englanninkieliset termit,
käyttöliittymä voi sitten vaihtaa ne jos on tarve. ÄVAIHTOEHTO:
käytetään numeronotaatiota, joka olisi laajennettavissa, esim. 1* =
koneen tyyppi, 14* = Mac, 141=powerbookit, ...)?


4. INDEKSOINNIN TOTEUTUS

Vapaa tekstihaku indeksimassasta toteutettaisiin New Generation
Softwaren vapaatekstihaku-järjestelmällä. Asiasta on jo alustavasti
keskusteltu Tatu Ylösen kanssa ja henki on ollut positiivinen. Ohjelma
saataisiin tähän käyttöön edulliseen hintaan FTP.funet.fi:hin,
mainosarvonkin vuoksi.

Esim. päivittäin kerättäisiin uudet ja muuttuneet indeksitiedostot
jotka sitten sijoitettaisiin tekstitietokantaan. Kerran viikossa
tehtäisiin tietokanta kokonaan uudelleen tyhjästä, jotta vanhentuneet
tiedot poistuisivat aikanaan.

Päivittäinen indeksitietojen keruu tehtäisiin perl-scriptillä, joka
katselee fileistä sopivat asiat jotka syötetään vapaateksti-indeksiin,
ja voimme myös tässä vaiheessa valmistella cacheja hakemistojen
sisällöistä gopheriin/WWW:hen ja muuta kivaa, jos joku nyt haluaisi
hakemistoissa sekoilla.

4.1. ARVIO LEVY- JA CPU-VAATIMUKSISTA

Oletetaan että tiedostoja on 100,000 kpl, ja että jokaisesta
tiedostosta on noin 2k tavun verran tietoa ja sisällysluetteloa. 
Indeksitiedot veisivät siis noin 200 megaa, ja vapaan tekstihaun
indeksi tästä tekstimassasta noin 100 megaa (50% tekstimassta), eli
yhteensä noin 300 megaa levytilaa (luokkaa 5% kaikesta levytilasta).

Indeksin luonti tyhjästä (kerran viikossa?) vanhojen tietojen
poistamiseksi vaatii isomman ajon, päivittäinen muuttuneiden
lisääminen olisi kevyt operaatio. Arviolta täyden indeksoinnin
tekeminen kestäisi pari tuntia, ja muuttuneiden tietojen lisäys
parikymmentä minuuttia. NGS:n softa on erikoisen tehokas indeksin
rakentamisvaiheessa.

Kokeilimme indeksoida 130 megaa suomenkielisiä newssiartikkeleita ja
tuohon aikaa kului reaaliaikaa pienellä alpha:lla noin kaksi ja puoli
tuntia. CPU aikaa hommaan kului puolisen tuntia (18% reaaliajasta). 
Indeksitiedoston kooksi tuli 79 megaa (60% tekstistä).

Haku tuosta aineistosta kesti alle sekunnin. Erillisiä tiedostoja oli
about 30000 ja aika suuri osa indeksointi ajasta meni varmaankin ko
tiedostojen stattaamiseen, avaamiseen ja lukemiseen (tungin indeksiin
myös viimeisen muutosajan ja tiedoston koon).

Resurssit asian tekemiseen tämän suunnitelman mukaisesti siis olisivat
olemassa.


5. CONCLUSIONS

Noin parin viikon työpanoksella olisi luotavissa "tulevaisuuden"
FTP-palvelinjärjestelmä, mistä tiedostot löytyy kätevästi. Suurempi
työ olisi sitten indeksitietojen luonnissa, osa voidaan tehdä
automaattisesti (esim. tar.gz, extraktoi *READ*ME* -> long
description, gtar tzvf sisällysluettelo, jne).

Tarkoitus olisi luoda laajempikin standardi, jonka pohjalta voitaisiin
joka paikassa luoda indeksitiedostot valmiiksi, joten vähän ajan
kuluttua saisimme jo mirroreiden mukana valmiit selostukset, jne.

Tarvitsemme ratkaisun ftp-tiedostoviidakkoon. FTP.funet.fi näyttäköön
tietä ;-)

!HUOM! Tämä on alustava dokumentti, monet yksityiskohdat ovat vain
       ideoita, joita ei ole vielä mietitty loppuun. Kaikki kommentit
       tervetulleita.
------klip-----------klip-----------klip-----------klip-----------klip-----
