2009-08-31 9 views
14

Fornirò un set di pagine HTML statiche su CD-Rom; queste pagine devono essere completamente visibili senza alcun accesso a Internet.Ricerca full-text di file HTML statici su CD-Rom tramite javascript

Mi piacerebbe fornire una ricerca full-text (tipo Lucene) per il contenuto di quelle pagine, che dovrebbe "funzionare" dal CD-Rom senza installazione software sul computer client.

Un'implementazione del motore di ricerca in javascript sarebbe la soluzione perfetta, ma ho difficoltà a trovare qualcosa che sembri solido/attuale/popolare ...?

ho trovato questi: + jsFind + js-search

ma entrambi i progetti sembrano piuttosto inattiva?

Un'altra soluzione, oltre a un motore di ricerca specifico in javascript, sarebbe la possibilità di accedere agli indici locali di Lucene da javascript: gli indici stessi verrebbero creati con Lucene e copiati nel CD-Rom insieme ai file HTML.

Modifica: creato da solo (vedere di seguito).

risposta

11

Beh, in effetti l'ho costruito io stesso.

Le soluzioni esistenti (che ho potuto trovare) non erano convincenti.

Volevo essere in grado di cercare un albero molto lungo (ul/li/ul ...) che viene visualizzato come una pagina; contiene oltre 5000 articoli.

Sembra un po 'strano visualizzare un albero così lungo su una pagina, ma in realtà con la compressione/espansione è molto più intuitivo rispetto a pagine separate, e poiché siamo offline, i tempi di download non sono un problema (i tempi di parsing sono , però, Chrome è incredibile ;-)

La funzione di "ricerca" fornita con i browser moderni (FF e Chrome comunque) ha due grossi problemi: essi cercano solo elementi visibili nella pagina e non possono cercare non -le parole consecutive.

Desidero poter cercare gli elementi compressi (non visibili sullo schermo); Voglio trovare "uno due tre" durante la ricerca di "uno tre" (proprio come con Google/Lucene); e voglio aprire solo i rami dell'albero che contengono gli oggetti trovati.

Allora, che cosa ho fatto è stato:

  1. creare un indice invertito di parole < -> ID di elementi dalla lista (tramite XSLT)
  2. convert (circa 4500 parole uniche nel documento.) questo indice per mazzo di array JavaScript (una parola = un array, contenenti ids)
  3. durante la ricerca, intersecare gli array rappresentate dalle parole di ricerca
  4. passo 3 restituisce una matrice di iD che posso quindi aprire/luce

Fa esattamente quello di cui avevo bisogno ed è davvero veloce. Meglio ancora, dal momento che cerca da un "indice" indipendente (matrici di id) può cercare quando l'elenco non è nemmeno caricato nel browser!

+1

Grazie per averci segnalato! – RichieHindle

+1

Ci sono esempi di ciò che potremmo vedere? –

+0

Hai questo pubblico ovunque? – James

2

Zoom Search Engine può fare questo.

Non ho usato la versione CD, ma uso la versione PHP per il mio sito Web e funziona molto bene.

+0

ho fatto osservare che, grazie, ma sembrava abbastanza complesso per adattarsi alle mie esigenze specifiche. – Bambax

1

So che molte persone usano Java per scrivere applet per la ricerca di CD. Ho una lista un po 'anziana di vari programmi gratuiti e commerciali allo Search Tools for CD-ROMs and DVDs.

0

Fullproof è una piccola libreria javascript che può fungere da ricerca di testo per te. Sarebbe utile in questo contesto, ma è anche utile nel modello "thick-javascript-webpage".

6

domanda iniziale è stato chiesto nel '09

A partire dal '14, non v'è lunr.js descritto come:

semplice ricerca full-text nel tuo browser

Vedere le Demo, e Github repo.


UPDATE settembre 2016: leggero fuzzy di ricerca, in JavaScript http://fusejs.io/

Problemi correlati