El motor de búsqueda de texto completo más fácil para un corpus pequeño con búsqueda de proximidad

Estoy creando un motor de búsqueda de texto completo para una serie de aproximadamente 10 libros de dominio público. El corpus rara vez se actualizará. La búsqueda de proximidad será la característica principal, por ejemplo, ubicar "hola" dentro de las 5 palabras de "mundo".

Estoy mirando las soluciones Haystack para Django/Python y Ruby. Conozco: Solr, Elasticsearch, Whoosh, Xapian y Sphinx.

Con un corpus tan pequeño, me centro en la facilidad de implementación, y ahora mismo me inclino por Whoosh (Python puro) o Sphinx (con Haystack o tal vez Ruby on Rails). ¿Pensamientos?

¿Tiene una definición para "palabra A cerca de la palabra B"? ¿Significa "cerca" dentro de 3 palabras antes o después de la palabra B? ¿Dentro de 5 palabras? ¿Es la "cercanía" definible por el usuario?
Sería ideal si fuera definible por el usuario. Sin embargo, incluso solo "en el mismo capítulo" sería suficiente. El mismo párrafo o un número específico de palabras separadas sería incluso mejor, pero no es estrictamente necesario.
Creo que la función a la que te refieres se llama búsqueda de proximidad .
@unor eso me ha reducido bastante. Podría probar Whoosh después de señalar en su documentación que admite la búsqueda de proximidad, y ya tengo una configuración de Django. ¡Gracias!
De hecho, me di cuenta de que Ruby podría ser más adecuado para mis necesidades, y noté que Sphinx tiene párrafos, oraciones y solo búsquedas de proximidad "cercanas", ¡increíble! sphinxsearch.com/docs/current/extended-syntax.html Podría usar eso. Responderé mi propia pregunta aquí una vez que realmente comience a implementar.

Respuestas (1)

Fui con Python, Flask, Whoosh y gunicorn. Fue pan comido, lo puse en marcha casi de inmediato, y la creación de Python de Whoosh ha sido bastante agradable. Búsqueda muy avanzada, adiciones fáciles. Perfecto para mi pequeño corpus.

Completé y publiqué el código de mi motor. Aquí hay una demostración en vivo . Lea mi artículo introductorio para obtener más detalles, y si escribo más artículos para este proyecto, aparecerán en mi sitio .

Aquí hay una referencia a la búsqueda de proximidad con el lenguaje de consulta de Whoosh.

esto es increíble. ¿Qué archivos estaría mirando si quisiera reutilizar su secuencia de comandos con un corpus diferente?
@StefanoMorello ¡Gracias por preguntar! De hecho, tengo muchas mejoras no publicadas en el repositorio, y recientemente volví a configurar mi entorno de desarrollo para este proyecto. He estado en una racha de publicar todo lo que ha languidecido en mi disco. He actualizado el enlace en la sección Acerca de del repositorio a una invitación de Discord para este proyecto específico en el que puedo ser de alguna ayuda; alternativamente, "Vea" el repositorio para una guía futura. 👍