Typesense es un motor de búsqueda rápido y tolerante a errores tipográficos para crear experiencias de búsqueda agradables.
Una alternativa de código abierto a Algolia y
Una alternativa a ElasticSearch más fácil de usar
Sitio web | Documentación | Hoja de ruta | Comunidad floja | Hilos de la comunidad | Gorjeo
Aquí hay un par de demostraciones en vivo que muestran Typesense en acción en grandes conjuntos de datos:
? Si prefieres ver vídeos:
¿No ves una característica en esta lista? Busque en nuestro rastreador de problemas si alguien ya lo ha solicitado y agréguele un comentario explicando su caso de uso, o abra un nuevo problema si no. Priorizamos nuestra hoja de ruta en función de los comentarios de los usuarios, por lo que nos encantaría saber de usted.
Aquí está la hoja de ruta pública de Typesense: https://typesense.link/roadmap.
La primera columna también explica cómo priorizamos las funciones, cómo usted puede influir en la priorización y nuestra cadencia de lanzamiento.
Nos encantaría realizar comparaciones con conjuntos de datos más grandes, si podemos encontrar otros de gran tamaño que sean de dominio público. Si tiene alguna sugerencia para conjuntos de datos estructurados que estén abiertos, háganoslo saber abriendo una incidencia. También estaremos encantados de que pueda compartir puntos de referencia de sus propios grandes conjuntos de datos. ¡Envíenos un PR!
Typesense es utilizado por una variedad de usuarios en diferentes dominios y sectores verticales.
En Typesense Cloud atendemos más de 10 MIL MILLONES de búsquedas por mes. Las imágenes de Docker de Typesense se han descargado más de 12 millones de veces.
Recientemente comenzamos a documentar quién lo usa en nuestro Showcase. Si desea ser incluido en la lista, no dude en editar SHOWCASE.md y enviarnos un PR.
También verá una lista de logotipos de usuarios en la página de inicio de Typesense Cloud.
Opción 1: Puedes descargar los paquetes binarios que publicamos para Linux (x86_64 & arm64) y Mac (x86_64).
Opción 2: también puedes ejecutar Typesense desde nuestra imagen oficial de Docker.
Opción 3: poner en marcha un clúster administrado con Typesense Cloud:
Aquí hay un ejemplo rápido que muestra cómo puede crear una colección, indexar un documento y buscarlo en Typesense.
Comencemos iniciando el servidor Typesense a través de Docker:
docker run -p 8108:8108 -v/tmp/data:/data typesense/typesense:27.1 --data-dir /data --api-key=Hu52dwsas2AdxdE
Tenemos clientes API en un par de idiomas, pero usemos el cliente Python para este ejemplo.
Instale el cliente Python para Typesense:
pip install typesense
Ahora podemos inicializar el cliente y crear una colección companies
:
import typesense
client = typesense . Client ({
'api_key' : 'Hu52dwsas2AdxdE' ,
'nodes' : [{
'host' : 'localhost' ,
'port' : '8108' ,
'protocol' : 'http'
}],
'connection_timeout_seconds' : 2
})
create_response = client . collections . create ({
"name" : "companies" ,
"fields" : [
{ "name" : "company_name" , "type" : "string" },
{ "name" : "num_employees" , "type" : "int32" },
{ "name" : "country" , "type" : "string" , "facet" : True }
],
"default_sorting_field" : "num_employees"
})
Ahora, agreguemos un documento a la colección que acabamos de crear:
document = {
"id" : "124" ,
"company_name" : "Stark Industries" ,
"num_employees" : 5215 ,
"country" : "USA"
}
client . collections [ 'companies' ]. documents . create ( document )
Finalmente, busquemos el documento que acabamos de indexar:
search_parameters = {
'q' : 'stork' ,
'query_by' : 'company_name' ,
'filter_by' : 'num_employees:>100' ,
'sort_by' : 'num_employees:desc'
}
client . collections [ 'companies' ]. documents . search ( search_parameters )
¿Notaste el error tipográfico en el texto de la consulta? No es gran cosa. ¡Typesense maneja errores tipográficos desde el primer momento!
Un recorrido paso a paso está disponible en nuestro sitio web aquí.
Esto lo guiará a través del proceso de iniciar un servidor Typesense, indexar datos en él y consultar el conjunto de datos.
Aquí está nuestra documentación oficial de API, disponible en nuestro sitio web: https://typesense.org/api.
Si nota algún problema con la documentación o el recorrido, háganoslo saber o envíenos un PR aquí: https://github.com/typesense/typesense-website.
Si bien definitivamente puedes usar CURL para interactuar con Typesense Server directamente, ofrecemos clientes API oficiales para simplificar el uso de Typesense desde el idioma que elijas. Los clientes API vienen integrados con una estrategia de reintento inteligente para garantizar que las llamadas API realizadas a través de ellos sean resistentes, especialmente en una configuración HA.
Si no ofrecemos un cliente API en su idioma, aún puede utilizar cualquier biblioteca de cliente HTTP popular para acceder directamente a las API de Typesense.
A continuación se muestran algunos clientes e integraciones aportados por la comunidad:
Agradecemos las contribuciones de la comunidad para agregar más bibliotecas e integraciones de clientes oficiales. Comuníquese con nosotros en [email protected] o abra un número en GitHub para colaborar con nosotros en la arquitectura.
También tenemos las siguientes integraciones de marco:
Tenemos una colección Postman mantenida por la comunidad aquí: https://github.com/typesense/postman.
Postman es una aplicación que te permite realizar solicitudes HTTP apuntando y haciendo clic, en lugar de tener que escribirlas en la terminal. La colección Postman anterior le brinda solicitudes de plantillas que puede importar a Postman para realizar rápidamente llamadas API a Typesense.
Puede utilizar nuestro adaptador InstantSearch.js para crear rápidamente potentes experiencias de búsqueda, completas con filtrado, clasificación, paginación y más.
Así es como: https://typesense.org/docs/guide/search-ui-components.html
Elasticsearch es un software de gran tamaño que requiere un esfuerzo no trivial para configurarlo, administrarlo, escalarlo y ajustarlo. Le ofrece unos miles de parámetros de configuración para llegar a su configuración ideal. Por lo tanto, es más adecuado para equipos grandes que tienen el ancho de banda para prepararlo para producción, monitorearlo periódicamente y escalarlo, especialmente cuando necesitan almacenar miles de millones de documentos y petabytes de datos (por ejemplo, registros).
Typesense está diseñado específicamente para reducir el "tiempo de comercialización" para una experiencia de búsqueda agradable. Es una alternativa liviana pero potente y escalable que se centra en la felicidad y la experiencia del desarrollador con una API limpia y bien documentada, una semántica clara y valores predeterminados inteligentes para que funcione bien desde el primer momento, sin que tengas que girar muchas perillas. .
Elasticsearch también se ejecuta en la JVM, lo que por sí solo puede suponer un gran esfuerzo de ajuste para que se ejecute de forma óptima. Typesense, por otro lado, es un binario nativo autónomo, liviano y único, por lo que es fácil de configurar y operar.
Vea una comparación de funciones en paralelo aquí.
Algolia es un producto de búsqueda como servicio, alojado y patentado, que funciona bien cuando el costo no es un problema. Según nuestra experiencia, los sitios y aplicaciones de rápido crecimiento se encuentran rápidamente con límites de búsqueda e indexación, acompañados de costosas actualizaciones de planes a medida que escalan.
Typesense, por otro lado, es un producto de código abierto que puede ejecutar en su propia infraestructura o utilizar nuestra oferta SaaS administrada: Typesense Cloud. La versión de código abierto es de uso gratuito (además, por supuesto, de sus propios costos de infraestructura). Con Typesense Cloud no cobramos por registros ni operaciones de búsqueda. En su lugar, obtiene un clúster dedicado y puede enviarle tantos datos y tráfico como pueda manejar. Solo paga un costo fijo por hora y cargos de ancho de banda, según la configuración que elija, similar a la mayoría de las plataformas en la nube modernas.
Desde la perspectiva del producto, Typesense tiene un espíritu más cercano a Algolia que Elasticsearch. Sin embargo, hemos abordado algunas limitaciones importantes con Algolia:
Algolia requiere índices separados para cada orden de clasificación, lo que cuenta para los límites de su plan. La mayoría de las configuraciones del índice, como campos para buscar, campos para facetar, campos para agrupar, configuraciones de clasificación, etc., se definen por adelantado cuando se crea el índice en lugar de poder configurarlos sobre la marcha en el momento de la consulta.
Con Typesense, estas configuraciones se pueden configurar en el momento de la búsqueda mediante parámetros de consulta, lo que lo hace muy flexible y desbloquea nuevos casos de uso. Typesense también puede brindarle resultados ordenados con un solo índice, en lugar de tener que crear varios. Esto ayuda a reducir el consumo de memoria.
Algolia ofrece las siguientes características que Typesense no tiene actualmente: personalización y análisis de búsqueda basados en servidor. Para el análisis, aún puede instrumentar su búsqueda en el lado del cliente y enviar métricas de búsqueda a la herramienta de análisis web de su elección.
Tenemos la intención de cerrar esta brecha en Typesense, pero mientras tanto, háganos saber si alguno de estos es un obstáculo para su caso de uso creando una solicitud de función en nuestro rastreador de problemas.
Vea una comparación de funciones en paralelo aquí.
Un servidor Typesense nuevo consumirá unos 30 MB de memoria. A medida que comience a indexar documentos, el uso de memoria aumentará en consecuencia. Cuánto aumenta depende de la cantidad y el tipo de campos que indexe.
Nos hemos esforzado por mantener las estructuras de datos en memoria optimizadas. Para que te hagas una idea aproximada: cuando se indexan 1 millón de títulos de Hacker News junto con sus puntos, Typesense consume 165 MB de memoria. El mismo tamaño de esos datos en el disco en formato JSON es 88 MB. Si tiene números de sus propios conjuntos de datos que podamos agregar a esta sección, ¡envíenos un PR!
Según nuestra experiencia, las empresas generalmente se preocupan cuando las bibliotecas que utilizan tienen licencia GPL, ya que el código de la biblioteca está directamente integrado en su código y dará lugar a trabajos derivados y activará el cumplimiento de la GPL. Sin embargo, Typesense Server es un software de servidor y esperamos que los usuarios normalmente lo ejecuten como un demonio separado y no lo integren con su propio código. GPL cubre y permite generosamente este caso de uso (por ejemplo: Linux tiene licencia GPL) . Ahora, AGPL es lo que hace que el software de servidor al que se accede a través de una red resulte en un trabajo derivado y no en GPL. Y por esa razón hemos optado por no utilizar AGPL para Typesense.
Ahora, si alguien realiza modificaciones en el servidor Typesense, la GPL en realidad le permite conservar las modificaciones siempre y cuando no distribuya el código modificado. Entonces, una empresa puede, por ejemplo, modificar el servidor Typesense y ejecutar el código modificado internamente y aún así no tener que abrir el código fuente de sus modificaciones, siempre y cuando ponga el código modificado a disposición de todos los que tengan acceso al software modificado.
Ahora, si alguien hace modificaciones al servidor Typesense y distribuye las modificaciones, ahí es donde entra en juego la GPL. Dado que hemos publicado nuestro trabajo en la comunidad, nos gustaría que las modificaciones de otros también estén abiertas a la comunidad en el espíritu de código abierto. Usamos GPL para este propósito. Otras licencias permitirían modificar nuestro trabajo de código abierto, convertirlo en código cerrado y distribuirlo, lo que queremos evitar con Typesense para la sostenibilidad a largo plazo del proyecto.
Aquí hay más antecedentes sobre por qué GPL, como lo describe Discourse: https://meta.discourse.org/t/why-gnu-license/2531. Muchos de los puntos allí mencionados resuenan en nosotros.
Ahora, todo lo anterior sólo se aplica a Typesense Server. De hecho, nuestras bibliotecas de clientes están destinadas a integrarse en el código de nuestros usuarios y, por lo tanto, utilizan la licencia Apache.
En resumen, AGPL es lo que suele ser problemático para el software de servidor y hemos optado por no usarlo. Creemos que GPL para Typesense Server captura la esencia de lo que queremos para este proyecto de código abierto. GPL tiene una larga historia de uso exitoso en proyectos populares de código abierto. Nuestras bibliotecas todavía tienen licencia Apache.
Si tiene detalles específicos que le impiden usar Typesense debido a un problema de licencia, estaremos encantados de explorar este tema más a fondo con usted. Comuníquese con nosotros.
Si tienes preguntas generales sobre Typesense, quieres saludar o simplemente seguirnos, nos gustaría invitarte a unirte a nuestra comunidad pública de Slack.
Si tiene algún problema o problema, cree un problema en GitHub y haremos todo lo posible para ayudarlo.
Nos esforzamos por brindar un buen soporte a través de nuestros rastreadores de problemas en GitHub. Sin embargo, si desea recibir asistencia privada y priorizada con:
Ofrecemos opciones de soporte pago que se describen aquí.
Somos un equipo ágil con la misión de democratizar la búsqueda y aceptaremos toda la ayuda que podamos obtener. Si desea participar, aquí encontrará información sobre dónde podríamos utilizar su ayuda: Contributing.md
Si desea recibir actualizaciones cuando lancemos nuevas versiones, haga clic en el botón "Ver" en la parte superior y seleccione "Solo versiones". Luego, GitHub le enviará notificaciones junto con un registro de cambios con cada nueva versión.
También publicamos actualizaciones en nuestra cuenta de Twitter sobre lanzamientos y temas adicionales relacionados con Typesense. Síguenos aquí: @typesense.
También publicaremos actualizaciones en nuestra comunidad Slack.
Usamos Bazel para construir Typesense.
Typesense requiere las siguientes dependencias:
Consulte los pasos de compilación de CI para conocer el último conjunto de dependencias.
Una vez que los haya instalado, ejecute lo siguiente desde la raíz del repositorio:
bazel build //:typesense-server
La primera compilación llevará algún tiempo ya que se extraen y crean otras bibliotecas de terceros como parte del proceso de compilación.
© 2016-presente Typesense Inc.