Limpiar filtro
Anuncio
Mario Sanchez Macias · 7 mar, 2022
1 de marzo de 2022
Este anuncio contiene enlaces a 14 avisos recientes que han sido publicados en la Página de Avisos y Alertas de Productos de InterSystems. Todos ellos afectan a los productos HealthShare, y los tres primeros avisos afectan también a InterSystems IRIS for Health.
FHIR Search with an Assigning Authority but no Identifier Omits Results
Some FHIR Queries that use _include and _revinclude Fail Silently
FHIR Queries May Omit Results
FHIR Queries that Specify a Quantity but no Units of Measure Return Incorrect Results
Time Zone Offsets not Applied to FHIR Resources
FHIR Searches that Specify a Time Range may Improperly Include or Exclude some Data
Clinical Viewer may lose “Standard Types” on Upgrade
Cross-site Scripting Issue in the Clinical Viewer
MPI Demographics May Contain Unconsented Data
When No Consent Group is Specified, Clinical Consent Rules May Fail
HS.Stream Global in Edge Gateways Not Cleared After Errors
HealthShare Care Community Tasks can be Assigned to Members of a Care Team who do not have Permission to View or Take Action on them
Cross-site Scripting Vulnerability in HealthShare Patient Index
Medications with a Blank “Start Date” may not Display in the Clinical Viewer
Anuncio
Esther Sanchez · 25 mayo, 2022
¡Hola desarrolladores!
Os invitamos a un nuevo webinar en español: "SAM: Monitorizando InterSystems IRIS con Grafana y Prometheus", el miércoles 15 de junio, a las 4:00 PM (CEST).
El webinar está dirigido a administradores de sistemas que, de un solo vistazo, quieren monitorizar uno o varios sistemas InterSystems IRIS y sus aplicaciones. También está dirigido a DevOps que tienen que agregar métricas de aplicación o de Interoperabilidad a la monitorización.
SAM (System Alerting & Monitoring) es la herramienta idónea para la monitorización de sistemas IRIS. Desarrollada por InterSystems encima de componentes estándares como Grafana y Prometheus, SAM ofrece una visión global de los sistemas IRIS a monitorizar, y facilita la gestión de alertas de cualquier sistema monitorizado.
Durante el webinar, presentaremos la arquitectura de SAM y su instalación; y empezaremos a monitorizar varios sistemas IRIS agrupados en clusters. Además, extenderemos las métricas existentes para monitorizar métricas de aplicaciones adicionales.
¡Os esperamos!
🗣 Ponente: @Pierre-Yves.Duquesnoy , Sales Engineer en InterSystems Iberia.
➡️ Podéis registraros aquí >> El próximo miércoles día 15 es el webinar sobre SAM, la herramienta para monitorizar sistemas IRIS. ¿Os habéis apuntado ya? 😎 ¡Mañana es el webinar! ¿Habéis conseguido hacerle un hueco en vuestra agenda??
Si queréis saber cómo monitorizar InterSystems IRIS... ya sabéis -> mañana a las 16:00 (CEST) 😎 ¡El webinar empieza en un rato!! ¿Listos? 🚀
Artículo
Joel Espinoza · 23 nov, 2022
Hola!
Aquí les dejo un video que hice para mostrar cómo se configura la alta disponibilidad (mirroring) en IRIS en un ambiente docker, el video esta completamente en español y los archivos necesarios estarán en mi Github.
El video en YouTube en https://youtu.be/rBdiTxavWmU
https://github.com/I-am-seven/iris-mirroring-video
Espero les sea de Utilidad!
Joel
Anuncio
Marcus Wurlitzer · 28 dic, 2021
¡Hola desarrolladores!
Estoy encantado de presentar Git para InterSystems IRIS, mi primera contribución a OpenExchange.
Git para InterSystems IRIS es un paquete de control de código fuente, que pretende facilitar una integración nativa del workflow de Git con la plataforma InterSystems IRIS. Está diseñado para trabajar como un enlace transparente entre InterSystems IRIS y un directorio de código con Git activado que, una vez configurado, no requiere interacción del usuario. Podéis encontrar una descripción más detallada en GitHub.
Me encantaría conocer vuestra opinión sobre este enfoque. ¿Tiene sentido? ¿Os ayudaría al establecer un pipeline de implemetación basado en Git? ¿Hay algún problema o incidencia que he podido pasar por alto?
Hay una demo de docker ready-to-run disponible en OpenExchange. La aplicación está en estado prueba de concepto utilizable, con algunas funcionalidades pendientes de ser implementadas. ¡Me encantaría recibir vuestro feedback!
Anuncio
Esther Sanchez · 4 abr, 2023
¡Hola Comunidad!
Muchísimas gracias a todos los que habéis participado, de una forma u otra, en el 4º Concurso de Artículos Técnicos en Inglés: Tutoriales de InterSystems IRIS. Hemos recibido
🌟 24 ARTÍCULOS INCREÍBLES 🌟
Y... ¡llegó el momento de anunciar los mejores!
Estos son los ganadores y sus artículos:
⭐️ Premios de los expertos – los ganadores han sido elegidos por expertos de InterSystems y sumando los puntos de los bonus, cuando aplicaba::
🥇 Primer puesto: InterSystems Embedded Python in glance, escrito por @Muhammad.Waseem
🥈 Segundo puesto: InterSystems Embedded Python with Pandas - Part 1, escrito por @Rizmaan.Marikar2583
🥉 Tercer puesto: SQLAlchemy - the easiest way to use Python and SQL with IRIS's databases, escrito por @Heloisa.Paiva
⭐️ Premio de la Comunidad – el ganador es elegido por los miembros de la Comunidad y es el artículo con mayor número de "likes"::
🏆 Cómo configurar VS Code para trabajar con las tecnologías de InterSystems, escrito por @Maria.Gladkova
Y...
⭐️ En esta ocasión, vamos a dar un Premio extra a varios autores, por el número de artículos que han presentado al concurso!:
@Robert.Cemper1003: ¡4 artículos!
@Heloisa.Paiva: ¡3 artículos!
@Irene.Mikhaylova: ¡3 artículos!
Podrán elegir entre el Teclado Magic Keyboard Folio para iPad o el Altavoz Inalámbrico Bose Soundlink Micro.
¡Y un fuerte aplauso al resto de participantes en el 4º Concurso de Artículos Técnicos en Inglés:
@Robert.Cemper1003
@Heloisa.Paiva
@Muhammad.Waseem
@wang.zhe
@Irene.Mikhaylova
@Maria.Gladkova
@Yone.Moreno
@Akio.Hashimoto1419
@Julian.Matthews7786
@Daniel.Aguilar
@water.huang
@Oliver.Wilms
@Rizmaan.Marikar2583
@姚.鑫
@Zhong.Li7025
@Jude.Mukkadayil
@Roger.Merchberger
¡GRACIAS por vuestro esfuerzo y por contribuir en la Comunidad!!!
¡Hasta el próximo concurso!!
Anuncio
Esther Sanchez · 14 abr, 2023
Hola desarrolladores:
¡Ya está aquí un nuevo Hackathon de InterSystems!
Tendrá lugar el 10 de mayo, primer día de la Conferencia "J On The Beach" en Málaga, de la que InterSystems es patrocinador oficial.
¿Por qué debéis inscribiros al hackathon?
El tema del hackathon es AutoML, así que es una oportunidad de oro para aprender sobre IA y ML
Solo hay que llevar un portátil y muchas ganas de aprender y pasarlo bien
Es una fantástica ocasión de hacer networking y conocer a otros desarrolladores
Podéis participar de forma individual o en equipo (max. 5 personas)
Es gratuito (10€ como depósito, que se devolverán cuando empiece el hackathon) *
Comida y bebida incluida, durante el desarrollo del hackathon
Y, por supuesto, fantásticos premios para los tres primeros clasificados: suscripciones a JetBrains, tarjetas regalo de Amazon, entradas a "J On The Beach"...
¿Os animáis?
Podéis inscribiros aquí: Hackathon de InterSystems >>, haciendo clic en J On The Beach 2023- Workshops & Hackathon.
* No hay que asistir al resto de la Conferencia "J On The Beach", se puede participar solo en el hackathon.
Más info...
Aquí tenéis toda la info sobre el horario, premios... Hackathon de InterSystems >>
¿Más dudas, preguntas?
Dejad vuestros comentarios en esta publicación o escribid a @David.Reche y os atenderemos encantados.
¿No sabéis qué es "J On The Beach"?
"J On The Beach" es una Conferencia Internacional sobre Big Data, para desarrolladores y DevOps. Incluye ponencias, charlas, workshops, el hackathon de InterSystems... Y cuenta con la presencia de prestigiosos profesionales de grandes empresas como Tesla, Grafana Labs, Microsoft, Facebook, Red Hat, Freepik, Wix... Para más información, consulta su página web, donde te cuentan todos los detalles sobre el evento: www.jonthebeach.com
¡Nos vemos en Málaga!! 🤩
Anuncio
Sergio Farago · 6 mar, 2025
¡Es hora de que nos veamos las caras!
Meetup de IA en modo afterwork con InterSystems
¿Te apasiona la inteligencia artificial y quieres descubrir cómo el RAG está revolucionando la IA generativa? Pues tenemos el plan perfecto para ti:
27 de marzo 18:30 - InterSystems Iberia, C. de Quintanadueñas, 6, Edificio ARQBÓREA, Fuencarral-El Pardo, Madrid
Ven a nuestro meetup de IA en formato afterwork. Charlaremos sobre cómo RAG mejora la precisión y la contextualidad en los modelos generativos, pero sin rollos teóricos aburridos. Será una sesión amena, con demos, conversaciones interesantes y, lo más importante… ¡pizzas y refrescos!
🎉 Contaremos con nuestro Maestro de Ceremonias: @LuisAngel.PérezRamos
Aprende, comparte y pásalo bien con otros entusiastas de la IA. ¡No hace falta traje ni corbata, solo ganas de charlar y disfrutar!
Reserva tu plaza y únete al futuro de la IA.
¿Te apuntas?
¡Habrá ponche y pasteles!
Anuncio
Sergio Farago · 7 abr, 2025
¡Hola desarrolladores!
¡Estamos felices de presentar la página de bonificaciones para las aplicaciones enviadas al Concurso de Programación de IA de InterSystems!
Ved los resultados a continuación.
Proyecto
Agent AI
Vector Search
Embedded Python
LLM AI or LangChain
IntegratedML
Docker
IPM
Online Demo
Community Idea Implementation
Find a bug
First Article on DC
Second Article on DC
Video on YouTube
First Time Contribution
Suggest New Idea
Total Bonus
Nominal
5
4
3
3
3
2
2
2
4
2
2
1
3
3
1
40
ollama-ai-iris
4
3
3
2
3
15
mcp-server-iris
5
3
3
2
3
16
langchain-iris-tool
5
4
3
3
2
2
2
4
2
1
3
1
32
AiAssistant
4
3
3
2
2
3
17
pax-ai-iris
3
3
6
IRIS-Intelligent-Butler
4
3
3
3
13
iris-data-analysis
4
3
3
2
2
2
3
19
bg-iris-agent
5
3
2
2
2
2
3
3
22
Facilis
5
3
3
2
2
15
Vitals Lab
4
3
3
3
13
iris-AgenticAI
5
4
3
3
2
2
1
20
toot
4
3
2
2
3
14
iris-clinical-assistant
3
3
2
3
11
oncorag
5
4
3
2
3
17
iris-easybot
5
4
3
2
14
Por favor, aplicad vuestros comentarios para nuevas implementaciones y correcciones que deban realizarse aquí en los comentarios o en Discord.
Anuncio
David Reche · 24 abr, 2019
¡Hola a todos!
Hoy es miércoles y por eso tenemos un nuevo video en nuestro Canal de YouTube, grabado en un nuevo formato, "Coding Talks":
Autor del vídeo: @Evgeny Shvarov
Objetivo del vídeo: Cómo implementar una solución sobre InterSystems IRIS mediante ObjectScript utilizando Docker, con un ejemplo de un repositorio de código dockerizado.
Puedes leer cómo dockerizar tu repositorio en uno de nuestros artículos. IR AL ARTÍCULO >>
Además...
¿Qué son los Coding Talks?: Los Coding Talks son vídeos cortos, en los que el desarrollador muestra una funcionalidad o característica de las soluciones de InterSystems, que utiliza para programar. Formato típico: el presentador aparece en un lado de la pantalla y, en el resto, el editor con ObjectScript.
¡Esperamos que el video te resulte útil! Y puedes dejarnos tus sugerencias/temas para este nuevo formato de video en los comentarios del post!
¡Gracias!
Artículo
Alberto Fuentes · 14 mayo, 2019
Hola a todos, me gustaría compartir una guía rápida publicada en el Developer Community sobre cómo conectar Apache Spark + Apache Zeppelin con InterSystems IRIS.
Introducción
Apache Spark es un framework opensource para computación en cluster. Proporciona una interfaz para desarrollar sobre clusters incluyendo paralelismo y tolerancia a fallos. Por ello es muy utilizado en Big Data.
Apache Zeppelin es un bloc de notas, que cuenta con una excelente interfaz de usuario para trabajar con diversos tipos análisis y machine learning.
Combinándolo con InterSystems IRIS, el conjunto funciona de tal manera que: IRIS proporciona los datos, Spark los lee y los trabajamos con en un bloc de notas de Apache Zeppelin.
Nota: la guía se ha confeccionado ejecutando los pasos sobre Windows 10.
Apache Zeppelin
Ahora instalaremos los programas necesarios. Antes que nada, descargamos Apache Zeppelin de su sitio oficial. Hemos utilizado zeppelin-0.8.0-bin-all.tgz que incluye Apache Spark, Scala, y Python.
Tras descomprimirlo, podemos ejecutar Zeppelin con el script con \bin\zeppelin.cmd, que se encuentra en la raíz de su carpeta Zeppelin. Tras aparecer "Done, zeppelin server started" ya podemos abrir la interfaz http://localhost:8080 en el navegador. Si todo se ejecutó de manera correcta, aparecerá lo siguiente:
Apache Spark
En la interfaz de Zeppelin, hacemos click en la esquina superior derecha de la pantalla en anonymous > Interpreter. Nos desplazamos hacia abajo y buscamos spark.
Hacemos click en el botón edit que aparece junto a spark y nos desplazamos hacia abajo para añadir las dependencias a las librerías jar que necesitamos (se encuentran en el directorio dev\java\lib\JDK de la instalación de IRIS).
Comprobar el funcionamiento
Vamos a comprobar que funciona. Creamos una nueva nota en Zeppelin, y en un párrafo nuevo escribimos el siguiente código para recuperar datos de una tabla Sample.Person:
var dataFrame=spark.read.format("com.intersystems.spark").option("url", "IRIS://localhost:51773/NAMESPACE").option("user", "UserLogin").option("password", "UserPassword").option("dbtable", "Sample.Person").load()
// dbtable - pasar el nombre de la tabla a cargar (e.g. Sample.Person)
La URL de IRIS tiene la siguiente forma:IRIS://ipAddress:superserverPort/namespace:
El protocolo IRIS es una conexión JDBC hecha sobre TCP/IP que ofrece una conexión de memoria compartida con Java.
ipAddress — La dirección IP de la instancia InterSystems IRIS.
superserverPort — El número de puerto del superservidor para la instancia IRIS (no es el puerto web). Recuerda que para consultar el número puerto del superservidor de IRIS puedes ir al Portal de Administración del sistema System Administration > Configuration > System Configuration > Memory and Startup (SuperServer port)
Namespace - Namespace de la instancia al que vamos a conectarnos.
Al ejecutarlo, si todo va bien aparecerá como FINISHED
Conclusión
En esta guía descubrimos cómo hacer que Apache Spark, Apache Zeppelin e InterSystems IRIS trabajen en conjunto. En próximos artículos hablaremos sobre las distintas formas que existen para analizar datos.
Enlaces
El sitio oficial de Apache Spark
Documentos disponibles sobre Apache Spark
El protocolo IRIS
Cómo utilizar InterSystems Spark Connector
Este artículo está etiquetado como "Mejores prácticas" ("Best practices")
(Los artículos con la etiqueta "Mejores prácticas" incluyen recomendaciones sobre cómo desarrollar, probar, implementar y administrar mejor las soluciones de InterSystems).
Anuncio
David Reche · 24 jul, 2019
Ya están disponibles las versiones de prueba de InterSystems IRIS e IRIS for Health 2019.3.La imagen del contenedor está disponible a través de la página de descargas para prueba del Centro de Soporte Internacional (WRC). .El número de compilación de estas versiones es 2019.3.0.302.0Los anuncios oficiales se harán dentro de poco, con anuncios independientes para cada producto. InterSystems IRIS Data Platform 2019.3 es una versión CD (continuous delivery) de InterSystems IRIS. Incluye muchas funcionalidades nuevas:Continuous Delivery Releases of InterSystems IRISInterSystems API ManagerNode-level Architecture for Sharding and SQL SupportInfrastructure and Cloud Deployment ImprovementsPort Authority for Monitoring Port Usage in Interoperability ProductionsX12 Element Validation in Interoperability ProductionsNew Framework for Coding Business Hosts in JavaJava and .NET Gateway Reentrancy InterSystems IRIS for Health 2019.3 incluye todas las mejoras de InterSystems IRIS. Además, esta versión incluye otras actualizaciones:FHIR STU3 PATCH SupportNew IHE Profiles XCA-I and IUAX12 Element Validation in Interoperability Productions Estas nuevas funcionalidades se detallan en:la versión preliminar de la documentación y las notas de la versión de InterSystems IRIS 2019.3 la versión preliminar de la documentación y las notas de la versión de InterSystems IRIS for Health 2019.3 Al ser una versión CD, solo está disponible en OCI (Open Container Initiative), es decir, en formato contenedor Docker. Las plataformas soportadas para producción y desarrollo se detallan en el Documento de plataformas soportadas. Para más información sobre lo que es una versión CD, revisad por favor el artículo sobre el nuevo plan de versiones (publicado en la Developer Community).Las versiones de prueba permiten a nuestros clientes empezar a trabajar con nuevas funcionalidades y características. Están soportadas cuando se utilicen con fines de desarrollo o pruebas, no en producción.
Artículo
Jose-Tomas Salvador · 2 sep, 2019
¡Hola Desarrolladores!Esta es la segunda publicación sobre recursos para desarrolladores. Esta parte es sobre Open Exchange.Utilizando Open Exchange para avanzar en la tecnología de InterSystemsInterSystems Open Exchange es una galería de herramientas de aplicaciones, conectores y librerías, que los desarrolladores de InterSystems publican para compartir formas de trabajar, enfoques y hacer negocio. Todas las aplicaciones están o construidas con InterSystems Data Platform o pensadas para ser usadas en desarrollos con nuestra tecnología.Si eres un desarrollador principiante en nuestra tecnología, puedes echar un vistazo a las aplicaciones de la categoría Technology Example. Todas las aplicaciones en esa categoría vienen con repositorios con el código fuente, así que podrás ejecutar los ejemplos en un contenedor docker de IRIS, en tu propio equipo servidor, en servidores en la nube o en una sandbox de IRIS en la nube.Ejemplos: Igualmente, echa un vistazo a las categorias Tools y Developer Environment para utilizar herramientas de desarrollador en tecnología IRIS Data Platform. Estas categorías contienen aplicaciones que ayudan a los desarrolladores en su trabajo del día a día, para aumentar la velocidad de su proceso de desarrollo, configurar nuevas formas de gestión de cambio e integración continua.Ejemplos: La categoría Frameworks te ayudará a sacar mejor provecho de las librerías de interoperabilidad con los frameworks más populares para desarrollar más rápido tus soluciones con InterSystems Por ejemplo, puedes utilizar Python, node.js, Laravel, etc. para construir soluciones con IRIS.Ejemplos: Por último, utiliza stars sorting para saber qué aplicaciones son más populares entre los desarrolladores de IRIS.¡No olvides suscribirte al tag OpenExchange para no perderte ningún anuncio de aplicaciones Open Exchange y no dudes en plantear tus preguntas o comentarios a la Comunidad de Desarrolladores!
Anuncio
Esther Sanchez · 26 sep, 2019
¡Hola Comunidad!
Tenemos un nuevo vídeo en el canal de YouTube de la Comunidad de Desarrolladores en inglés, grabado por @Stefan.Wittmann
Serialización JSON y XML de datos persistentes en InterSystems IRIS
¿Tienes que trabajar con JSON o XML?
InterSystems IRIS soporta herencia múltiple y ofrece varias herramientas integradas para facilitar la conversión entre XML, JSON y objetos, cuando lo necesites.
Descubre más sobre las posibilidades de desarrollo multi-modelo de InterSystems IRIS en nuestra web: learning.intersystems.com.
¡Esperamos que os resulte útil!
Artículo
Estevan Martinez · 22 oct, 2019
El DBMS de InterSystems incorpora una tecnología para trabajar con datos no estructurados (iKnow) y una tecnología de búsqueda de textos completos (iFind). Decidimos profundizar en ambas y hacer algo útil. Como resultado, tenemos DocSearch, una aplicación web para realizar búsquedas en la documentación de InterSystems utilizando iKnow y iFind.
Cómo funciona la documentación de Caché
La documentación en Caché se basa en la tecnología Docbook. Tiene una interfaz web (que incluye la posibilidad de realizar búsquedas sin utilizar iFind ni iKnow). Los artículos se almacenan en clases de Caché, lo que nos permite realizar consultas de estos datos y, por supuesto, crear nuestra propia herramienta de búsqueda.
Qué son iKnow y iFind
Intersystems iKnow es una tecnología que se desarrolló para el análisis de datos no estructurados, y proporciona acceso a estos mediante la indexación de frases e instancias en ellos. Para iniciar el análisis, primero necesita crear un dominio, es decir, un almacenamiento para datos no estructurados y subir un texto en él.
The iFind technology es un módulo DBMS de Caché para llevar a cabo búsquedas de texto completo en las clases de Caché. iFind utiliza muchas clases de iKnow para realizar búsquedas inteligentes de texto. Para utilizar iFind en sus consultas, debe introducir un índice especial iFind en su clase de Caché.
Existen tres tipos de índices iFind, cada uno de los cuales ofrece todas las funciones del tipo anterior, más algunas funciones adicionales:
El índice principal (%iFind.Index.Basic): es compatible con la búsqueda y las combinaciones de palabras
El índice semántico (%iFind.Index.Semantic): es compatible con la búsqueda de objetos en iKnow
La búsqueda analítica (%iFind.Index.Analytic): es compatible con todas las funciones iKnow de la búsqueda semántica, así como con la información sobre las rutas y la proximidad de las palabra
Dado que la documentación de las clases se almacena en un namespace separado, si desea que las clases estén disponibles en el nuestro, el programa de instalación también realiza un mapeo de los paquetes y los globals.
Código de instalación para el mapeo
XData Install [ XMLNamespace = INSTALLER ]
{
<Manifest>
// Specify the name of the namespace
<IfNotDef Var="Namespace">
<Var Name="Namespace" Value="DOCSEARCH"/>
<Log Text="Set namespace to ${Namespace}" Level="0"/>
</IfNotDef>
// Check if the area exists
<If Condition='(##class(Config.Namespaces).Exists("${Namespace}")=1)'>
<Log Text="Namespace ${Namespace} already exists" Level="0"/>
</If>
// Creating the namespace
<If Condition='(##class(Config.Namespaces).Exists("${Namespace}")=0)'>
<Log Text="Creating namespace ${Namespace}" Level="0"/>
// Creating a database
<Namespace Name="${Namespace}" Create="yes" Code="${Namespace}" Ensemble="" Data="${Namespace}">
<Log Text="Creating database ${Namespace}" Level="0"/>
// Map the specified classes and globals to a new namespace
<Configuration> <Database Name="${Namespace}" Dir="${MGRDIR}/${Namespace}" Create="yes" MountRequired="false"
Resource="%DB_${Namespace}" PublicPermissions="RW" MountAtStartup="false"/>
<Log Text="Mapping DOCBOOK to ${Namespace}" Level="0"/>
<GlobalMapping Global="Cache*" From="DOCBOOK" Collation="5"/>
<GlobalMapping Global="D*" From="DOCBOOK" Collation="5"/>
<GlobalMapping Global="XML*" From="DOCBOOK" Collation="5"/>
<ClassMapping Package="DocBook" From="DOCBOOK"/>
<ClassMapping Package="DocBook.UI" From="DOCBOOK"/>
<ClassMapping Package="csp" From="DOCBOOK"/>
</Configuration>
<Log Text="End creating database ${Namespace}" Level="0"/>
</Namespace> <Log Text="End creating namespace ${Namespace}" Level="0"/>
</If>
</Manifest>
}
El dominio que iKnow requiere se construye sobre la tabla que contiene la documentación. Debido a que utilizamos una tabla como fuente de datos, utilizaremos a SQL.Lister. El campo de contenido tiene el texto de la documentación, así que lo especificaremos como el campo de datos. El resto de los campos se describirán en los metadatos.
Código del instalador para crear un dominio
ClassMethod Domain(ByRef pVars, pLogLevel As %String, tInstaller As %Installer.Installer) As %Status
{
#Include %IKInclude
#Include %IKPublic
set ns = $Namespace
znspace "DOCSEARCH"
// Create a domain or open it if it exists
set dname="DocSearch"
if (##class(%iKnow.Domain).Exists(dname)=1){
write "The ",dname," domain already exists",!
zn ns
quit
}
else {
write "The ",dname," domain does not exist",!
set domoref=##class(%iKnow.Domain).%New(dname)
do domoref.%Save()
}
set domId=domoref.Id
// Lister is used for searching for sources corresponding to the records in query results
set flister=##class(%iKnow.Source.SQL.Lister).%New(domId)
set myloader=##class(%iKnow.Source.Loader).%New(domId)
// Building a query
set myquery="SELECT id, docKey, title, bookKey, bookTitle, content, textKey FROM SQLUser.DocBook"
set idfld="id"
set grpfld="id"
// Specifying the fields for data and metadata
set dataflds=$LB("content")
set metaflds=$LB("docKey", "title", "bookKey", "bookTitle", "textKey")
// Putting all data into Lister
set stat=flister.AddListToBatch(myquery,idfld,grpfld,dataflds,metaflds)
if stat '= 1 {write "The lister failed: ",$System.Status.DisplayError(stat) quit }
//Starting the analysis process
set stat=myloader.ProcessBatch()
if stat '= 1 {
quit
}
set numSrcD=##class(%iKnow.Queries.SourceQAPI).GetCountByDomain(domId)
write "Done",!
write "Domain cointains ",numSrcD," source(s)",!
zn ns
quit
}
Para buscar dentro de la documentación, utilizamos el índice %iFind.Index.Analytic:
Index contentInd On (content) As %iFind.Index.Analytic(LANGUAGE = "en",
LOWER = 1, RANKERCLASS = "%iFind.Rank.Analytic");
Donde contentInd es el nombre del índice y content es el nombre del campo que creamos para el índice. El parámetro LANGUAGE = “en” establece el idioma del texto. El parámetro LOWER = 1 desactiva la sensibilidad para diferenciar las mayúsculas y las minúsculas. El parámetro RANKERCLASS = "%iFind.Rank.Analytic" permite que se utilice el resultado del algoritmo de clasificación TF-IDF.
Después de añadir y elaborar dicho índice, éste se puede utilizar, por ejemplo, en las consultas SQL. La sintaxis general para utilizar iFind en SQL es:
SELECT * FROM TABLE WHERE %ID %FIND
search_index(indexname,'search_items',search_option)
Después de crear el índice %iFind.Index.Analytic con esos parámetros, se generan varios procedimientos SQL del siguiente tipo: [table_name]_[index name]Procedure name
En nuestro proyecto, utilizamos dos de ellos:
DocBook_contentIndRank - devuelve el resultado del algoritmo de clasificación TF-IDF para una solicitud. El procedimiento tiene la siguiente sintaxis:
SELECT DocBook_contentIndRank(%ID, ‘SearchString’, ‘SearchOption’) Rank FROM DocBook
WHERE %ID %FIND search_index(contentInd,‘SearchString’, ‘SearchOption’)
DocBook_contentIndHighlight - devuelve los resultados de la búsqueda, donde las palabras buscadas se envolvieron en la etiqueta que se especificó:
SELECT DocBook_contentIndHighlight(%ID, ‘SearchString’, ‘SearchOption’,’Tags’) Text FROM DocBook
WHERE %ID %FIND search_index(contentInd,‘SearchString’, ‘SearchOption’)
Entraré en más detalles sobre esto más adelante en el artículo.
Qué obtenemos al final:
Autocompletado en el campo de búsqueda
Cuando empiece a introducir texto en el campo de búsqueda, el sistema le sugerirá posibles variantes de la consulta, para ayudarle a encontrar la información necesaria más rápidamente. Estas sugerencias se generan de acuerdo a la palabra (o su inicio) que se escribe. El sistema muestra las diez mejores palabras o frases que coinciden con la búsqueda. Este proceso utiliza iKnow, es decir, el método %iKnow.Queries.Entity.GetSimilar
Búsqueda difusa
iFind es compatible con la búsqueda difusa, para encontrar palabras que coincidan parcialmente con la cadena de búsqueda introducida. Esto se logra al medir la distancia de Levenshtein que existe entre dos palabras. La distancia Levenshtein es el número mínimo de cambios en un carácter (inserciones, eliminaciones o sustituciones) que son necesarios para convertir una palabra en otra. Esto puede utilizarse para corregir errores tipográficis, pequeñas variaciones en la escritura, diferentes formas gramaticales (por ejemplo, el plural y el singular).
En las consultas SQL que se realizan con iFind, el parámetro search_option es responsable de la búsqueda difusa. El parámetro search_option = 3 denota una distancia de Levenshtein de 2. Para establecer una distancia Levenshtein que sea igual a n, es necesario establecer el parámetro search_option en ‘3:n’. En la búsqueda de documentación se utiliza una distancia Levenshtein de 1, así que vamos a demostrar cómo funciona esto: Escribamos "ifind" en el campo de búsqueda.
Vamos a realizar una búsqueda difusa poniendo un error tipográfico de forma intencional. Como podemos ver, la búsqueda corrigió el error tipográfico y encontró los artículos necesarios.
Búsquedas complejas
Gracias a que iFind es compatible con las consultas complejas con corchetes y con los operadores AND OR NOT, pudimos implementar la funcionalidad de búsquedas complejas. Esto es lo que puede especificar en su consulta: una palabra, una combinación de palabras, una de varias palabras, excepciones. Los campos pueden completarse uno por uno, o todos al mismo tiempo. Por ejemplo, vamos a buscar artículos que contengan la palabra “iknow”, la combinación “rest api” y los que tengan “domain” o “UI”. Podemos ver que existen dos artículos de este tipo: Tenga en cuenta que en el segundo artículo se menciona Swagger UI, de modo que podemos modificar la consulta para que excluya los que contengan la palabra Swagger. Como resultado, únicamente encontramos un artículo:
Resaltado en los resultados de búsqueda
Como se indicó anteriormente, el uso del índice iFind crea el procedimiento DocBook_contentIndHighlight. Utilicemos lo siguiente:
SELECT DocBook_contentIndHighlight(%ID, 'search_items', '0', '<span class=""Illumination"">', 0) Text FROM DocBook
Para obtener el texto resultante dentro de una etiqueta
<span class=""Illumination"">
Esto le ayudará a resaltar visualmente los resultados de la búsqueda en el front-end.
Clasificación de los resultados de la búsqueda
Find es capaz de clasificar los resultados mediante el algoritmo TF-IDF. TF-IDF se utiliza con frecuencia en las tareas para analizar texto y en la búsqueda de datos, por ejemplo, como un criterio de importancia cuando se realiza una consulta de búsqueda en un documento.
Como resultado de la consulta SQL, el campo Rank contendrá la importancia de la palabra, la cual será proporcional al número de veces que la palabra se utilizó en un artículo, e inversamente proporcional a la frecuencia con que aparece la palabra en otros artículos.
SELECT DocBook_contentIndRank(%ID, ‘SearchString’, ‘SearchOption’) Rank FROM DocBook
WHERE %ID %FIND search_index(contentInd,‘SearchString’, ‘SearchOption’)
Integración con la búsqueda de documentos oficial
Después de la instalación, se añadirá el botón “Search using iFind” a la búsqueda de documentos oficial. Si el campo “Search words” está lleno, le llevará a la página de resultados de la búsqueda después de hacer clic en el botón “Search using iFind”. Si el campo está vacío, le llevará a una nueva página de búsqueda.
Instalación
Descargue la última versión disponible del archivo Installer.xml en la página correspondiente.
Importe el archivo Installer.xml hacia el namespace %SYS y realice la compilación.
Introduzca el siguiente comando dentro del terminal, en el namespace %SYS:
do ##class(Docsearch.Installer).setup(.pVars)
Después de eso, la búsqueda estará disponible en la siguiente dirección localhost:[port]/csp/docsearch/index.html
Demo
Aquí puede ver una demo online sobre cómo se realizan las búsquedas.
Conclusión
Este proyecto muestra las interesantes y útiles capacidades de las tecnologías iFind e iKnow, que hacen que la búsqueda de datos sea más relevante. Apreciamos mucho cualquier comentario o sugerencia que haga. El código fuente completo con el instalador y la guía de implementación está disponible en GitHub.
Anuncio
David Reche · 14 oct, 2019
¡Hola a tod@s!
Hoy anunciamos el lanzamiento de un Área de Descargas para Desarrolladores, con las versiones completas de InterSystems IRIS Community Edition e InterSystems IRIS for Health Community Edition. Están disponibles de forma gratuita para su uso en el desarrollo de aplicaciones. Cualquiera puede usar este área, tan solo debe registrarse, no es necesario ser cliente.
Se pueden descargar directamente desde la InterSystems Developer Community eligiendo Download InterSystems IRIS.
Esas instancias incluyen una licencia gratuita para utilizar durante 13 meses. Están limitadas a 10GB de datos de usuario, funcionan en equipos de hasta 8 núcleos, soportan 5 conexiones concurrentes y están soportadas para el desarrollo de aplicaciones. Plataformas disponibles: RedHat, Ubuntu, SUSE, Windows y macOS.
InterSystems IRIS e InterSystems IRIS for Health también están disponibles en formato contenedor desde el Docker Hub.
Para aprender más sobre nuestros productos, puedes visitar nuestra página Getting Started o las páginas de IRIS Data Platform y de InterSystems IRIS for Health en nuestra web. Para profundizar en el desarrollo de software, puedes visitar nuestra página para desarrolladores: Developer resource page.
Si ya tienes una cuenta de acceso con InterSystems (para acceder a la Comunidad de Desarrolladores o al Centro de Soporte Internacional WRC, por ejemplo), puedes usar esas credenciales para acceder al nuevo Área de Descargas para Desarrolladores.