2009-08-31 7 views
14

Proporcionaré un conjunto de páginas HTML estáticas en CD-ROM; estas páginas deben ser totalmente visibles sin acceso a Internet en absoluto.Búsqueda de texto completo para archivos HTML estáticos en CD-Rom a través de javascript

Me gustaría proporcionar una búsqueda de texto completo (similar a Lucene) para el contenido de esas páginas, que debería "solo funcionar" desde el CD-ROM sin instalación de software en la máquina del cliente.

La implementación de un motor de búsqueda en JavaScript sería la solución perfecta, pero tengo problemas para encontrar una que se vea sólida/actual/popular ...?

Lo que encontrar los siguientes: + jsFind + js-search

pero ambos proyectos parecen bastante inactivo?

Otra solución, además de un motor de búsqueda específico en javascript, sería la posibilidad de acceder a los índices Lucene locales desde javascript: los índices mismos se construirían con Lucene y se copiarían en el CD-Rom junto con los archivos HTML.

Editar: lo construí yo mismo (ver abajo).

Respuesta

11

Bueno, de hecho, yo mismo lo construí.

Las soluciones existentes (que pude encontrar) no fueron convincentes.

Yo quería poder buscar un árbol muy largo (ul/li/ul ...) que se muestra como una página; contiene más de 5000 elementos.

Suena un poco raro mostrar un árbol tan largo en una página, pero de hecho con colapsar/expandir es mucho más intuitivo que las páginas separadas, y como estamos fuera de línea, los tiempos de descarga no son un problema (los tiempos de análisis son , sin embargo, Chrome es sorprendente ;-)

La función de "búsqueda" provista con los navegadores modernos (FF y Chrome de todos modos) tiene dos grandes problemas: solo buscan elementos visibles en la página, y no pueden buscar palabras consecutivas.

Quiero ser capaz de buscar elementos colapsados ​​(no visibles en la pantalla); Quiero encontrar "uno dos tres" cuando busco "uno tres" (al igual que con Google/Lucene); y quiero abrir solo las ramas del árbol que contienen los elementos encontrados.

Por lo tanto, lo que hice fue:

  1. crear un índice invertido de palabras < -> ids de los elementos de la lista (a través de XSLT)
  2. convert (aprox 4500 palabras únicas en el documento.) este índice para manojo de arrays Javascript (una palabra = un array, ids contienen)
  3. cuando se busca, se cruzan los arrays representados por las palabras de búsqueda
  4. paso 3 devuelve una matriz de ids que pueda entonces abierto/luces

Hace exactamente lo que necesitaba y es realmente rápido. Mejor aún, dado que busca desde un "índice" independiente (matrices de identificadores), ¡puede buscar cuando la lista ni siquiera está cargada en el navegador!

+1

¡Gracias por informarnos! – RichieHindle

+1

¿Hay algún ejemplo de esto que podamos ver? –

+0

¿Tiene este público en cualquier lugar? – James

2

Zoom Search Engine puede hacer esto.

No he usado la versión de CD, pero utilizo la versión de PHP para mi sitio web y funciona muy bien.

+0

hice mira eso, gracias, pero parecía bastante complejo para adaptarse a mis necesidades específicas. – Bambax

1

Sé que mucha gente usa Java para escribir miniaplicaciones de búsqueda de CD. Tengo una lista un poco antigua de varios programas gratuitos y comerciales en Search Tools for CD-ROMs and DVDs.

0

Fullproof es una pequeña e ingeniosa biblioteca de JavaScript que puede actuar como una búsqueda de texto para usted. Sería útil en este contexto, pero también es útil en el modelo "thick-javascript-webpage".

6

pregunta inicial se le preguntó en el '09

A partir del '14, hay lunr.js describe como:

búsqueda de texto completo simple en su navegador

Véase el Demo, y Github repo.


ACTUALIZACIÓN de septiembre de 2016: Ligera difusa de búsqueda, en JavaScript http://fusejs.io/

Cuestiones relacionadas