# motore di ricerca per man pages

## Arpeda

Ciao ragazzi,

ho scritto un piccolo motore di ricerca per man pages in quanto apropos più di una volta si è dimostrato insufficiente per le mie necessità.

lo trovate qui: http://savannah.nongnu.org/download/asd/ (prendete l'ultima versione disponibile)

Il programma è formato da 2 parti: create_asdb che si occupa di indicizzare le man page (scritta in perl), asd che si occupa di rispondere alle query dell'utente (scritta in python).

Per ora si limita a fare ricerche booleane di termini in and, ed è ancora in fase di testing. Ad ogni modo se volete provarlo e farmi sapere i vostri pareri, commenti o quant'altro vi venga in mente non può farmi che piacere. Se dovreste trovare dei bug (come spero) mandatemi la man page incriminata e l'oputput del comando.

Fatemi sapere

Arpeda

----------

## koma

Benvenuto

----------

## fedeliallalinea

Hai mai provato con

```
$ man -k parola

$ man -K parola
```

  :Question: 

----------

## neryo

Benvenuto!  :Very Happy:  Gia' penso che con man -k si trovi molto facilmente quello che si cerca.. ci spieghi quali innovazioni ha il tuo motore di ricerca per le man pages?

----------

## Arpeda

conoscevo sia man -k che man -K, il primo è equivalente ad apropos, il secondo invece è molto lento.

un po come la differenza tra emerge -S ed esearch  :Wink: 

inoltre un simile sistema è facilmente estendibile anche alle info pages ed eventualmente anche ad altra documentazione presente sul sistema.

Ciao

Arpeda

----------

## gutter

Intanto benvenuto  :Wink: 

Solo una domanda ma la ricerca la fai su tutta la pagina man o solo sulle intestazioni?

----------

## randomaze

 *Arpeda wrote:*   

> inoltre un simile sistema è facilmente estendibile anche alle info pages ed eventualmente anche ad altra documentazione presente sul sistema.
> 
> 

 

Sarebbe interessante appunto estenderlo e magari integrarlo con htdig (al quale lasciare l'onere di indicizzare la documentazione html) in modo da avere la "doc desktop search" senza bisogno di scomodare Beagle o simili  :Wink: 

----------

## Arpeda

la ricerca viene fatta su tutta la man page, e vengono escluse solo le sezioni meno significative.

per quanto riguarda l'estensione e l'integrazione con altri programmi bhe lo metto nel TODO  :Wink: 

se l'avete provato e avete visto qualcosa che non va fatemi sapere.

Ciao

Arpeda

----------

## gutter

L'idea di randomaze di intergrare il tuo motore di ricerca con Beagle mi sembra davvero interessante.

----------

## randomaze

 *gutter wrote:*   

> L'idea di randomaze di intergrare il tuo motore di ricerca con Beagle mi sembra davvero interessante.

 

In realtà non volevo integrare ma sostituire... con un meccanismo più minimalista  :Wink: 

----------

## gutter

 *randomaze wrote:*   

> 
> 
> In realtà non volevo integrare ma sostituire... con un meccanismo più minimalista 

 

Questa scelta spetta allo sviluppatore se ha voglia di farlo sarebbe davvero un bel lavoro anche molt utile  :Wink: 

----------

## fedeliallalinea

 *Arpeda wrote:*   

> un po come la differenza tra emerge -S ed esearch 

 

uhhh ottimo allora direi  :Wink: 

----------

## Arpeda

 *fedeliallalinea wrote:*   

> uhhh ottimo allora direi 

 

bene sono contento che non sia lavoro del tutto vano  :Wink: 

 *randomaze wrote:*   

> In realtà non volevo integrare ma sostituire... con un meccanismo più minimalista 

 

devo saperne di più di questo Beagle ...

per quanto riguarda l'estensione alle info pages, sarà la seconda cosa che farò dopo aver aggiunto una funzionalità di update al sistema di indicizzazione.

Infatti ora come ora ogni volta si analizza tutte le pagine e ricrea il db, ed è un evidente ridondanza inutile non trovate?  :Wink: 

grazie per le dritte

Arpeda

Ps. Sto facendo un ebuild presto lo aggiungerò a questo thread

----------

## redview

scusate l'innioranza.. :Rolling Eyes: 

ma il modesto locate nn è già ottimo per cercare file??

nn cerca all'interno dei file, però cmq è iperveloce..

----------

## fedeliallalinea

 *redview wrote:*   

> nn cerca all'interno dei file, però cmq è iperveloce..

 

Si ma se non sai come si chiama una certa funzione non e' che serve molto

----------

## redview

 *fedeliallalinea wrote:*   

> Si ma se non sai come si chiama una certa funzione non e' che serve molto

 

cioè?? :Embarassed: 

----------

## gutter

 *redview wrote:*   

> 
> 
> cioè??

 

Locate cerca file mentre questo progetto indicizza man page e permette di effettuare una ricerca all'interno delle man page ovvero sul contenuto.

----------

## fedeliallalinea

 *gutter wrote:*   

>  *redview wrote:*   
> 
> cioè?? 
> 
> Locate cerca file mentre questo progetto indicizza man page e permette di effettuare una ricerca all'interno delle man page ovvero sul contenuto.

 

Si e' come ha detto gutter, ma ti faccio un esempio: se io cerco la funzione per coparare le stringhe in C ma non so il suo nome locate mi serve a poco mentre con questo progetto potrei dire di cercare "compare string"

----------

## Arpeda

ragazzi pian pianino continuo a correggere cosette e a sistemare il codice prima delle prossime cose importanti da fare.

nessuno mi ha fatto sapere nulla però  :Sad: 

io cmq non demordo e vado avanti a programmare  :Wink: 

ciao

----------

## rota

eiste la possibilità di mettere le man pages in italiano ??? con si puo fare....con gentoOO??? :Question:   :Question: 

 *Quote:*   

> Ps...ma non esiste gia INFO ????   

 

----------

## Arpeda

si le manpages in italiano si possono mettere.

```
emerge app-i18n/manpages-it

e poi assicurati di avere la variabile di ambiente LANG impostata su it

```

ah, giusto per ritornare in topic, asd lavora correttamente solo sulle man pages in inglese.

per quanto riguarda INFO non capisco la citazione  :Wink: 

ciao

Arpeda

----------

## gutter

 *Arpeda wrote:*   

> 
> 
> per quanto riguarda INFO non capisco la citazione 
> 
> 

 

In che senso?

----------

## Arpeda

nel senso che  non ho capito che c'entra INFO

----------

## gutter

 *Arpeda wrote:*   

> nel senso che  non ho capito che c'entra INFO

 

Penso si riferisca alle info page. 

Non centra molto  :Wink:  ma vediamo se il diretto interessato sa spiegarci meglio quello che voleva dire  :Smile: 

----------

## rota

ma dici  a me???

se cè info  a che  servve quello che stai cercaando di fare:?:

l'ideea...comuque è carina....

----------

## randomaze

 *rota wrote:*   

> se cè info  a che  servve quello che stai cercaando di fare:?:

 

O ci riferiamo a un diverso 'info' oppure il normale 'info comando' produce un risultato simile alla man page, senza possibilità di ricerca globale... rota puoi fare un esempio più pratico?

----------

## rota

si pero ai la lista...dei  man 

info

Miscellaneous:

* Groff: (groff).                       The GNU troff document formatting

                                        system.

* Rluserman: (rluserman).               GNU Readline Library API

Development

* CVS: (cvs).                           Concurrent Versions System

* CVS client/server: (cvsclient).       Describes the client/server protocol

                                        used by CVS.

* Flex: (flex).                         A fast scanner generator

* gcj-3.3: (gcj-3.3).                   Ahead-of-time compiler for the Java

                                        language

  @Arpeda non te  la prendere...non ce lo  con te...aprezzo molto quello che stai facendo...solo che sono  pignolo... :Wink: 

----------

## Arpeda

rota converrai con me che è più conveniente avere un tool che ti dice quali sono i documenti correlati ad un certo termine, piuttosto che leggerti tutti i titoli dei documenti che hai sul sistema.

Io lo uso spesso, non solo per testarlo ma anche per vedere se effettivamente può essere utile, nel senso più di una volta in chat o sui forum capita che c'è l'utente che chiede come si fa una cosa o se esiste un comando che fa una certa cosa, bhe devo ammettere che la maggior parte delle volte asd riesce a trovare una risposta  :Wink: 

@rota: le critiche sono sempre costruttive

Ps. un piccolo consiglio, ora come ora non uso nessun db, dite che vale la pena passare ad un db tipo mysql o berkleyDB? non so se avete presente le classiche tecniche di information retrieval (inverted-file), per ora il "db" che uso è un file binario gestito direttamente da me.

----------

## rota

se vuoi fare le cose fatte bene...crea un database  dentro all programma...no???o qualcosa di simile...

cioè non far fare  niente...alle persone..che  installano sto motore....pensa  se oltre installare sto programma  devvo pure installare msql .....

----------

## Arpeda

tutti quei puntini sospensivi mi portano a pensare che il tuo messaggio si abbastanza ironico  :Wink: 

fin'ora non ho usato un db per non portarmi dietro dipendenze varie, volevo un qualcosa di minimale, ora però sto nel dubbio

----------

## gutter

 *Arpeda wrote:*   

> 
> 
> Ps. un piccolo consiglio, ora come ora non uso nessun db, dite che vale la pena passare ad un db tipo mysql o berkleyDB? non so se avete presente le classiche tecniche di information retrieval (inverted-file), per ora il "db" che uso è un file binario gestito direttamente da me.

 

Un file di appoggio può andare anche bene almeno all'inizio dello sviluppo. Io comunque punterei ad usare berkleyDB e non mysql. Dal momento che mi sembra inutile scomodare un DB relazionale per conservare delle informazioni che alla fine sono dictionary.

----------

## randomaze

 *gutter wrote:*   

> Un file di appoggio può andare anche bene almeno all'inizio dello sviluppo. Io comunque punterei ad usare berkleyDB e non mysql. Dal momento che mi sembra inutile scomodare un DB relazionale per conservare delle informazioni che alla fine sono dictionary.

 

Volendo un DB relazionale senza server (quindi solo file di appoggio) ci sarebbe anche sqlite, che tra l'altro ha già i bindings per python.

----------

## Arpeda

 *gutter wrote:*   

>  Io comunque punterei ad usare berkleyDB ...

 

idem

ho sentito che il formato dei file dict è sia compresso che indicizzato, ne sapete nulla a riguardo?

cmq per ora continuo a tenere tutto su file, ho in mente degli accorgimenti per abbreviare i tempi di interrogazione, anche se il problema vero rimane l'aggiornamento.

nel frattempo vedo di spulciarmi un po di db minimali per vedere se ce ne sta qualcuno che fa al caso mio.

----------

## gutter

 *randomaze wrote:*   

> 
> 
> Volendo un DB relazionale senza server (quindi solo file di appoggio) ci sarebbe anche sqlite, che tra l'altro ha già i bindings per python.

 

Ho letto qualcosa adesso, non mi pare una cattiva idea seguire il consiglio di randomaze.

----------

## Arpeda

ho fatto un ebuild molto rozzo:

aggiugete nel vostro OVERLAY sys-apps/asd/

salvate il codice qui sotto in asd-0.2.4-r2.ebuild

```

# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

DESCRIPTION="A search engine for man/info pages"

HOMEPAGE="https://savannah.nongnu.org/projects/asd/"

SRC_URI="http://savannah.nongnu.org/download/asd/${P}-${PR}.tar.gz"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86"

IUSE=""

RDEPEND=">=dev-lang/perl-5.8.0-r12

         >=dev-lang/python-2.1.3-r1"

src_install() {

        S=${WORKDIR}/${P}-r2

        DIR_ASD=/usr/lib/ASD/

        into /

        dobin $S/create_asdb || die

        dobin $S/asd || die

        dodoc $S/README $S/Changelog

        dodir $DIR_ASD

        dodir $DIR_ASD/Indexer

        dodir $DIR_ASD/Query

        dodir /var/cache/man/asd

        insinto $DIR_ASD

        doins $S/ASD/*.pm

        insinto $DIR_ASD/Indexer

        doins $S/ASD/Indexer/*.pm

        insinto $DIR_ASD/Query

        doins $S/ASD/Query/*.py

}

```

fate il digest con 

```

ebuild asd-0.2.4-r2.ebuild digest

```

e poi

```

emerge -v asd

```

seguiranno a breve altri aggiornamenti visto che ho un po di tempo per lavorarci sopra.

Arpeda

----------

## Arpeda

ragazzi  Ã¨ passato molto tempo dall'ultimo post. Di cambiamenti ce ne sono stati tanti, primo fra tutti il passaggio al C++ (che si Ã¨ rivelata una scelta vincente). L'indicizzazione ora avviene tramite CLucene. C'Ã¨ un set minimale di librerie da scaricare e installare ma per il resto va piuttosto bene. Il Searcher Ã¨ ancora lontano dall'essere completo ma offre il minimo indispensabile.

Trovate la nuova versione sul cvs di asd: http://savannah.nongnu.org/projects/asd/

se volete provarlo e farmi sapere le vostre impressioni, sto qui che attendo pazientemente  :Very Happy: 

Arpeda

----------

