A MySQL plugin that filters rows by meaning (built on TypeSafe Jev) A preview-release native MySQL plugin called mysql-ailike lets SQL queries filter rows and compare text columns using natural-language conditions via the AILIKE operator, powered by TypeSafe Jev and requiring a TypeSafe API key. AILIKE returns 1 for a match and 0 otherwise, returns NULL for any NULL argument, and sends evaluated values and prompts to TypeSafe, with each uncached evaluation making an API request. The plugin is licensed GPL-2.0-only and ships with a Docker demo and a join demo dataset of three supplier products and three catalog products. A native MySQL plugin for filtering rows and comparing text columns with natural-language conditions, powered by TypeSafe Jev https://docs.typesafe.ai . Install and check compatibility https://github.com/maayanlevy/mysql-ailike/blob/main/docs/install.md · Try the Docker demo https://github.com/maayanlevy/mysql-ailike/blob/main/docs/sample-data.md run-the-local-demo Preview release. Requires a TypeSafe API key. Note: evaluated values and prompts are sent to TypeSafe. Find columns based on NL meaning: SELECT film id, title, description FROM sakila.film WHERE film id BETWEEN 1 AND 8 AND description AILIKE 'The story takes place somewhere in Asia'; | Syntax | Question | |---|---| | column AILIKE 'condition' | Does this value satisfy the condition? | | ailike value, prompt | Does this value satisfy the condition? | | ailike left, right, prompt | Do these values satisfy the relationship? | AILIKE returns 1 for a match and 0 otherwise. Any NULL argument returns NULL . Arguments are string. use CAST ... AS CHAR for other types. Narrow candidates with ordinary SQL conditions: each uncached evaluation makes an API request. The demo dataset https://github.com/maayanlevy/mysql-ailike/blob/main/sql/join-demo.sql contains three supplier products and three catalog products. With AILIKE installed, open mysql -u root -p from the repository root and load it into a fresh database: CREATE DATABASE ailike join demo; USE ailike join demo; SOURCE sql/join-demo.sql; Pass both columns and describe the relationship: SELECT a.id AS supplier id, a.description AS supplier, b.id AS catalog id, b.description AS catalog FROM supplier products AS a JOIN catalog products AS b ON a.category id = b.category id AND ailike a.description, b.description, 'Left and right describe the same kind of product, ' 'with matching material and key features. Wording may differ.' ORDER BY a.id, b.id; Expected matches: 1, 1 for the steel bottle and vacuum flask, and 3, 3 for the headphones. The glass carafe and plastic bottle have no matching pair. Format-independent date/period match SELECT rental id, rental date FROM sakila.rental WHERE customer id = 1 AND ailike CAST rental date AS CHAR , 'In July 2005' ORDER BY rental id; AILIKE returns a model judgment. Use SQL date functions for exact comparisons. Contributing https://github.com/maayanlevy/mysql-ailike/blob/main/CONTRIBUTING.md · Report a vulnerability https://github.com/maayanlevy/mysql-ailike/blob/main/SECURITY.md · AI coding agent skill https://github.com/maayanlevy/mysql-ailike/blob/main/skills/mysql-ailike/SKILL.md · GPL-2.0-only https://github.com/maayanlevy/mysql-ailike/blob/main/LICENSE