検索

記事
· 2025年10月31日 5m read

Nobody expects the Spanish Inquisidor!!

Yes, yes! Welcome! You haven't made a mistake, you are in your beloved InterSystems Developer Community in Spanish.

You may be wondering what the title of this article is about, well it's very simple, today we are gathered here to honor the Inquisitor and praise the great work he performed. 

Comunidad de Steam :: :: Nobody expects the Spanish Inquisition

So, who or what is the Inquisitor?

Perfect, now that I have your attention, it's time to explain what the Inquisitor is. The Inquisitor is a solution developed with InterSystems technology to subject public contracts published daily on the platform  https://contrataciondelestado.es/ to scrutiny.

Although the platform has a search engine enabled to filter public tenders, it had several limitations:

  • It is impossible to perform searches by the tender title.
  • The search by awardees depends on knowing the exact description used in the registration of the same in the tender result, which invariably varies from one to another (I have found InterSystems written in 5 different ways).
  • Finding the agency that published the tender is worthy of a Where's Waldo in the Public Administration book.

And needless to say, it is impossible to obtain even the slightest statistic regarding the bidding processes.

How does the Inquisitor work?

Very simply put, the public procurement platform generously provides the public with daily downloads of the tenders published on the platform in XML format like this:

<entry>
        <id>https://contrataciondelestado.es/sindicacion/licitacionesPerfilContratante/13983936</id>
        <link href="https://contrataciondelestado.es/wps/poc?uri=deeplink:detalle_licitacion&amp;idEvl=Ag4n4m84LtCqb7rCcv76BA%3D%3D"/>
        <summary type="text">Id licitación: 2023/20; Órgano de Contratación: Parlamento de Andalucía; Importe: 99750 EUR; Estado: EV</summary>
        <title>Suministro de equipamiento para el trabajo de trabajo en movilidad del Parlamento de Andalucía.</title>
        <updated>2024-01-31T12:59:50.514+01:00</updated>
        <cac-place-ext:ContractFolderStatus>
            <cbc:ContractFolderID>2023/20</cbc:ContractFolderID>
            <cbc-place-ext:ContractFolderStatusCode listURI="https://contrataciondelestado.es/codice/cl/2.04/SyndicationContractFolderStatusCode-2.04.gc" languageID="es">EV</cbc-place-ext:ContractFolderStatusCode>
            <cac-place-ext:LocatedContractingParty>
                <cbc:ContractingPartyTypeCode listURI="http://contrataciondelestado.es/codice/cl/2.10/ContractingAuthorityCode-2.10.gc">2</cbc:ContractingPartyTypeCode>
                <cbc:ActivityCode listURI="http://contrataciondelestado.es/codice/cl/2.10/ContractingAuthorityActivityCode-2.10.gc">1</cbc:ActivityCode>
                <cbc:BuyerProfileURIID>https://contrataciondelestado.es/wps/poc?uri=deeplink:perfilContratante&amp;idBp=SI5CV24QS6s%3D</cbc:BuyerProfileURIID>
                <cac:Party>
                    <cbc:WebsiteURI>http://www.parlamentodeandalucia.es</cbc:WebsiteURI>
                    <cac:PartyIdentification>
                        <cbc:ID schemeName="DIR3">I00000175</cbc:ID>
                    </cac:PartyIdentification>
                    <cac:PartyIdentification>
                        <cbc:ID schemeName="NIF">S4133001J</cbc:ID>
                    </cac:PartyIdentification>
                    <cac:PartyIdentification>
                        <cbc:ID schemeName="ID_PLATAFORMA">20015840002647</cbc:ID>
                    </cac:PartyIdentification>

You can access the files from this URL .

The Inquisitor connects daily to the URL that downloads the file and maps it to its own database, extracting the most useful data from it, such as the description, the amount, publication dates as well as the winner and the amount in the case of being awarded.

This information can be accessed from an Angular application developed for this purpose:

What does InterSystems IRIS bring to the Inquisitor?

So far, the functionalities presented couldn't be simpler and could be implemented with any technology, but thanks to IRIS, we don't have to settle for these basic features. Let's see how IRIS enhances and improves our Inquisitor.

Columnar storage for statistics

The platform currently stores 874,534 tenders, both published and awarded (and growing). While the number of records could affect the statistical analysis, the columnar storage of the award amount column dramatically reduces search and aggregation times.

Property Ganador As %String(MAXLEN = 200);
Property GanadorNIF As %String(MAXLEN = 200);
Property ImporteGanador As %Numeric(STORAGEDEFAULT = "columnar");
Property ImporteGanadorSinImpuestos As %Numeric(STORAGEDEFAULT = "columnar");

In this way, we can quickly and immediately search for the aggregated award amounts by winning companies, contracting body, and publication years.

Text indexing with %iFind

Searching using text fields can be a real pain, as it involves queries that use "LIKE" as well as special characters like "%" or "?", which can slow down the results indefinitely. This isn't a problem when working with IRIS thanks to indexing with %iFind (more information here ).

Index IndexTitulo On (Titulo) As %iFind.Index.Basic(INDEXOPTION = 0, LANGUAGE = "es");

This type of index allows you to index text fields, which dramatically speeds up searches on them, saving processing time and, most importantly, not exhausting our patience.

Here we can see an example of a search for contract awards for the acquisition of sausages, which took less than 1 second:

Vectorization of tender titles

Sometimes we may not be entirely sure of the description used for the title of the tenders, so we have taken advantage of the vector storage capabilities of the database to vectorize the titles and allow searches based on vector proximity, obtaining results that approximate the search performed.

Property TituloVectorizado As %Vector(DATATYPE = "DECIMAL", LEN = 384);

Conclusions

As you can see, what may initially seem like a basic application can be greatly improved and optimized thanks to InterSystems IRIS, making use of the many functionalities and capabilities included.

Are you experiencing bottlenecks or performance issues in your applications? Check out InterSystems IRIS!

The application is available on GitHub alongside this article. It uses the Community version of InterSystems IRIS, so you can use it for free, with the only limitation being the database size.

We currently have a public version available which you can access (by requesting it by leaving a comment on this article).

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 2025年10月31日

¡Último webinar del año! Smart Supply Chain 360: Ver, Decidir, Actuar

¡Buenas a todos!

Vamos a cerrar el año por todo lo alto. Os invitamos a este webinar en español con @Pierre-Yves Duquesnoy "Smart Supply Chain 360: Ver, Decidir, Actuar" el jueves 27 de noviembre, a las 4:00 PM (CET).

   

Descubrid cómo InterSystems Supply Chain Orchestrator actúa como tejido conectivo inteligente entre vuestros sistemas ERP, WMS, TMS existentes, sin necesidad de "rip and replace".

Veréis en acción un chatbot inteligente con acceso directo a todos vuestros datos de supply chain, que comprende vuestro modelo de datos y actúa como asistente conversacional para la toma de decisiones en tiempo real. Podéis preguntarle sobre inventarios, analiza KPIs críticos, o solicita recomendaciones prescriptivas.

Incluye demo técnica mostrando APIs, modelo de datos extensible y análisis prescriptivo. Webinar dirigido a Arquitectos e ingenieros de soluciones, Data Analytics y Applications manager (ERP, WMS, TMS)

¡Os esperamos!

🗣 Ponente: Pierre-Yves Duquesnoy, Senior Sales Engineer en InterSystems 

➡️ Registro >>

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2025年10月31日 6m read

Nobody expects the Spanish Inquisidor!

¡Sí sí! ¡Adelante! No os habéis equivocado, estáis en vuestra querida Comunidad de Desarrolladores de InterSystems en español.

Os preguntaréis a qué viene el título de este artículo, pues muy sencillo, hoy estamos aquí reunidos para honrar al Inquisidor y elogiar la gran labor desempeñada por el mismo. 

Comunidad de Steam :: :: Nobody expects the Spanish Inquisition

Y bien, ¿quién o qué es el Inquisidor?

Perfecto, ahora que he captado vuestra atención, es momento de explicar que es el Inquisidor. El Inquisidor es una solución desarrollada con tecnología InterSystems para someter a inquisición los contratos públicos que diariamente son publicados en la plataforma https://contrataciondelestado.es/

Aunque la plataforma tiene un buscador habilitado para filtrar las licitaciones públicas este tenía varias limitaciones:

  • Es imposible realizar búsquedas por el título de la licitación.
  • La búsqueda por adjudicatarios depende de que conozcas la descripción exacta utilizada en el registro del mismo en el resultado de la licitación, la cual varía invariablemente de una a otra (me he encontrado a InterSystems escrito de 5 formas distintas).
  • Encontrar el organismo que ha publicado la licitación es digno de un libro de ¿Dónde está Wally en la Administración Pública?

Y ni qué decir tiene que es imposible sacar la más mínima estadística al respecto de las licitaciones.

¿Cómo funciona el Inquisidor?

Muy sencillo, la plataforma de contratación pública pone a disposición de la plebe, en una muestra de generosidad, descargas diarias de las licitaciones publicadas en la plataforma en formato XML de este estilo:

<entry>
        <id>https://contrataciondelestado.es/sindicacion/licitacionesPerfilContratante/13983936</id>
        <link href="https://contrataciondelestado.es/wps/poc?uri=deeplink:detalle_licitacion&amp;idEvl=Ag4n4m84LtCqb7rCcv76BA%3D%3D"/>
        <summary type="text">Id licitación: 2023/20; Órgano de Contratación: Parlamento de Andalucía; Importe: 99750 EUR; Estado: EV</summary>
        <title>Suministro de equipamiento para el trabajo de trabajo en movilidad del Parlamento de Andalucía.</title>
        <updated>2024-01-31T12:59:50.514+01:00</updated>
        <cac-place-ext:ContractFolderStatus>
            <cbc:ContractFolderID>2023/20</cbc:ContractFolderID>
            <cbc-place-ext:ContractFolderStatusCode listURI="https://contrataciondelestado.es/codice/cl/2.04/SyndicationContractFolderStatusCode-2.04.gc" languageID="es">EV</cbc-place-ext:ContractFolderStatusCode>
            <cac-place-ext:LocatedContractingParty>
                <cbc:ContractingPartyTypeCode listURI="http://contrataciondelestado.es/codice/cl/2.10/ContractingAuthorityCode-2.10.gc">2</cbc:ContractingPartyTypeCode>
                <cbc:ActivityCode listURI="http://contrataciondelestado.es/codice/cl/2.10/ContractingAuthorityActivityCode-2.10.gc">1</cbc:ActivityCode>
                <cbc:BuyerProfileURIID>https://contrataciondelestado.es/wps/poc?uri=deeplink:perfilContratante&amp;idBp=SI5CV24QS6s%3D</cbc:BuyerProfileURIID>
                <cac:Party>
                    <cbc:WebsiteURI>http://www.parlamentodeandalucia.es</cbc:WebsiteURI>
                    <cac:PartyIdentification>
                        <cbc:ID schemeName="DIR3">I00000175</cbc:ID>
                    </cac:PartyIdentification>
                    <cac:PartyIdentification>
                        <cbc:ID schemeName="NIF">S4133001J</cbc:ID>
                    </cac:PartyIdentification>
                    <cac:PartyIdentification>
                        <cbc:ID schemeName="ID_PLATAFORMA">20015840002647</cbc:ID>
                    </cac:PartyIdentification>

Tenéis acceso a los archivos desde esta URL.

El Inquisidor se conecta diariamente a la URL que descarga el fichero y lo mapea a su propia base de datos, extrayendo los datos más útiles de la misma, como es la descripción, el importe, fechas de publicación así como el ganador de la misma y el importe en el caso de estar adjudicadas.

Esta información puede ser consultada desde una aplicación de Angular desarrollada para tal efecto:

¿Que nos aporta InterSystems IRIS al Inquisidor?

Hasta ahora las funcionalidades presentadas no pueden ser más sencillas y podrían implementarse con cualquier tecnología, pero gracias a IRIS, no tenemos que contentarnos con esa funcionalidades básicas. Veamos cómo IRIS impulsa y mejora a nuestro Inquisidor.

Almacenamiento columnar para estadísticas

Actualmente la plataforma almacena 874534 licitaciones entre publicadas y adjudicadas (y creciendo). La explotación estadística de las mismas se podría ver afectada por el número de registros, pero gracias al almacenamiento de tipo columnar sobre la columna de importes de adjudicación el tiempo de búsqueda y de agregaciones se reduce dramáticamente.

Property Ganador As %String(MAXLEN = 200);
Property GanadorNIF As %String(MAXLEN = 200);
Property ImporteGanador As %Numeric(STORAGEDEFAULT = "columnar");
Property ImporteGanadorSinImpuestos As %Numeric(STORAGEDEFAULT = "columnar");

De tal forma que podremos buscar agilmente y con absoluta inmediatez los importes de adjudicaciones agregadas tanto por empresas ganadoras, organismo contratante y años de publicación.

Indexación de textos con %iFind

Las búsquedas por campos de texto pueden ser una auténtica tortura, al implicar consultas que hagan uso de "LIKE" así como de carácteres especiales "%" o "?" que pueden ralentizar la obtención de resultados ad aeternum. Esto no es un problema trabajando con IRIS gracias a la indexación con %iFind (más información aquí).

Index IndexTitulo On (Titulo) As %iFind.Index.Basic(INDEXOPTION = 0, LANGUAGE = "es");

Este tipo de índices permite indexar campos de texto que aceleran de forma dramática las búsquedas sobre los mismos ahorrando tiempos de procesamiento y sobre todo y lo más importante, no agotando nuestra paciencia.

Aquí podemos ver un ejemplo de búsqueda de adjudicaciones de contratos para la adquisición de embutidos y la cual ha tardado menos de 1 segundo:

Vectorización de títulos de licitaciones

En ocasiones es posible que no estemos totalmente seguros de la descripción usada para el título de las licitaciones, por ello hemos aprovechado las capacidades de almacenamiento vectorial de la base de datos para la vectorización de los títulos y permitir búsquedas basadas en proximidad vectorial, obteniendo resultados que se aproximen a la búsqueda realizada.

Property TituloVectorizado As %Vector(DATATYPE = "DECIMAL", LEN = 384);

Conclusiones

Como veis, lo que a priori puede ser una aplicación básica, gracias a InterSystems IRIS puede ser mejorada y optimizada al máximo haciendo uso de las múltiples funcionalidades y capacidades incluidas.

¿Cuellos de botellas o problemas de rendimiento en tus aplicaciones? ¡Echa un vistazo a InterSystems IRIS!

Asociado a este artículo tenéis la aplicación subida a GitHub. La aplicación hace uso de la versión Community de InterSystems IRIS, por lo que podréis hacer uso de la misma de forma gratuita, con la única limitación del tamaño de la base de datos.

Actualmente disponemos de una versión pública a la que podréis acceder (previa solicitud dejando un comentario en este artículo).

1 Comment
ディスカッション (1)2
続けるにはログインするか新規登録を行ってください
記事
· 2025年10月31日 20m read

使用 Docker 运行 InterSystems IRIS 的分步指南 - 第 1 部分:从基础知识到自定义 Dockerfile

目录

  1. 本文目的
  2. 什么是容器,它们为什么对 IRIS 有意义
     2.1 容器和镜像简介
     2.2 为什么容器对开发者很有用
     2.3 为什么 IRIS 可以很好地与 Docker 配合使用
  3. 先决条件
  4. 安装 InterSystems IRIS 镜像
     4.1 使用 Docker Hub
     4.2 拉取镜像
  5. 运行 InterSystems IRIS 镜像
     5.1 启动 IRIS 容器
     5.2 检查容器状态
     5.3 在容器终端执行代码
     5.4 访问 IRIS 管理门户
     5.5 将容器连接到 VS Code
     5.6 停止或移除容器
     5.7 使用绑定挂载设置特定密码
     5.8 使用持久化 %SYS 卷
      5.8.1 可以使用持久化 %SYS 存储什么
      5.8.2 如何启用持久化 %SYS
  6. 使用 Docker Compose
     6.1 Docker Compose 示例
     6.2 运行 Docker Compose
  7. 使用 Dockerfile 运行自定义源代码
     7.1 Dockerfile 示例
     7.2 Docker Compose 示例
     7.3 了解层、镜像标记和构建与 运行时
     7.4 源代码和初始化脚本
     7.5 使用 Dockerfile 构建镜像
     7.6 在容器化 IRIS 终端中运行指令
  8. 结语和未来计划

1 Comment
ディスカッション (1)3
続けるにはログインするか新規登録を行ってください
お知らせ
· 2025年10月30日

[Video] A Day in the Life of a Developer - Data Platforms Roundup

Hey Community,

Enjoy the new video on InterSystems Developers YouTube:

⏯ A Day in the Life of a Developer - Data Platforms Roundup @ Ready 2025

Explore full-stack development with InterSystems IRIS and Python, using only VS Code and mainstream technologies for object-relational mapping and UI development. Learn how to build modern, efficient applications with familiar tools and frameworks.

Presenters:
🗣 @Stefan Wittmann, Product Manager at InterSystems
🗣 @Raj Singh, Product Manager, Developer Experience at InterSystems

Curious how it works? Watch the video and subscribe for more insights!

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください