ACOR v1.3.0: HTTP and gRPC Server Adapters

Introduction ACOR v1.3.0 adds HTTP and gRPC server adapters. You can now easily integrate ACOR into microservice architectures or deploy it as a standalone server. This post covers the usage and deployment of both adapters. Architecture Overview v1.3.0 adds a pkg/server package that exposes the existing pkg/acor APIs over HTTP JSON and gRPC: ┌ │ └ ─ ─ ─ ─ ─ ─ ─ C ─ ─ l ─ ─ i ─ ─ e ─ ─ n ─ ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │ ┘ ─ ─ ─ ─ ▶ ┌ │ │ └ ┌ │ └ ┌ │ └ ─ ─ ─ ─ ─ ─ ─ H ─ ─ ─ ─ ─ ─ T ─ ─ p ─ ─ ─ ─ T S ─ ─ k ─ ─ ─ ─ P e ─ ─ g ─ ─ R ─ ─ / r ─ ─ / ─ ─ e ─ ─ g v ┬ │ ▼ a ┬ │ ▼ d ─ ─ R e ─ ─ c ─ ─ i ─ ─ P r ─ ─ o ─ ─ s ─ ─ C ─ ─ r ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │ │ ┘ ┐ │ ┘ ┐ │ ┘ HTTP Server Basic Usage 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 package main import ( "log" "net/http" "github.com/skyoo2003/acor/pkg/acor" "github.com/skyoo2003/acor/pkg/server" ) func main() { ac, err := acor.Create(&acor.AhoCorasickArgs{ Addr: "localhost:6379", Name: "sample", }) if err != nil { log.Fatal(err) } defer ac.Close() httpHandler := server.NewHTTPHandler(ac) http.Handle("/", httpHandler) log.Println("HTTP server listening on :8080") log.Fatal(http.ListenAndServe(":8080", nil)) } API Endpoints Method Path Description POST /add Add keyword POST /remove Remove keyword POST /find Search text POST /find-index Search with position info POST /suggest Autocomplete suggestions POST /suggest-index Autocomplete with position info GET /info Collection info POST /flush Delete collection Request/Response Examples Add Keyword ...

March 17, 2026 · 5 min · Sung-Kyu Yoo

ACOR v1.3.0: Introducing the Command-Line Tool

Introduction ACOR v1.3.0 introduces a new command-line tool acor. You can now manipulate Aho-Corasick automata directly from the terminal without writing Go code. This post covers the CLI’s main features and usage. Installation Binary Download Download platform-specific binaries from GitHub Releases: 1 2 3 4 5 6 7 8 9 # macOS (Apple Silicon) curl -LO https://github.com/skyoo2003/acor/releases/download/v1.3.0/acor_1.3.0_darwin_arm64.tar.gz tar xzf acor_1.3.0_darwin_arm64.tar.gz sudo mv acor /usr/local/bin/ # Linux (x86_64) curl -LO https://github.com/skyoo2003/acor/releases/download/v1.3.0/acor_1.3.0_linux_amd64.tar.gz tar xzf acor_1.3.0_linux_amd64.tar.gz sudo mv acor /usr/local/bin/ Build from Source 1 2 3 git clone https://github.com/skyoo2003/acor.git cd acor make build The built binary will be at bin/acor. ...

March 17, 2026 · 3 min · Sung-Kyu Yoo

ACOR v1.3.0: Redis Topology Support and Enhanced Error Handling

Introduction ACOR v1.3.0 introduces two significant Redis-related improvements. First, it now supports various Redis topologies (Sentinel, Cluster, Ring). Second, the API has been improved to explicitly handle errors during Redis communication. Redis Topology Support The Problem Prior to v1.3.0, ACOR only supported a single Redis instance (Addr). In production environments, Redis Sentinel is often used for high availability, or Redis Cluster for handling large-scale data. Using ACOR in these environments required additional work. ...

March 17, 2026 · 3 min · Sung-Kyu Yoo

Deep Dive into ACOR v1.3.0 Index APIs

Introduction The Aho-Corasick algorithm is a classic string-searching algorithm that efficiently finds all occurrences of multiple patterns in a text simultaneously. It’s widely used in spam filtering, sensitive data detection, and autocomplete systems. ACOR is a Go library that implements Aho-Corasick with Redis as the backend storage. Version 1.3.0 introduces Index APIs that extend the existing functionality to provide match position information. In this post, we’ll take a deep dive into the design and implementation of the FindIndex and SuggestIndex APIs. ...

March 16, 2026 · 5 min · Sung-Kyu Yoo

ACOR v1.2.0 Release: Standard Project Structure and Bug Fixes

Introduction I’ve released ACOR v1.2.0. This version focuses on restructuring the project to follow Go standards and fixing a few bugs. Standard Project Structure v1.2.0 restructures the project to follow the standard Go project layout (#2). As the project grew, managing the file structure systematically became necessary. Following the Standard Go Project Layout guidelines: pkg/: Package code importable by external projects internal/: Private application code cmd/: Main applications This structure makes the project’s intent clearer and more maintainable. ...

July 8, 2021 · 2 min · Sung-Kyu Yoo

ACOR v1.1.0 Release: Migration to Go Modules and GitHub Actions

Introduction I’ve released ACOR v1.1.0. This version focuses on modernizing the project foundation rather than adding new features. Following the evolution of the Go ecosystem, I migrated the dependency management and CI/CD systems to current standards. Why Go Modules ACOR initially used Glide for dependency management. Glide was widely used in the community during the era when Go lacked an official dependency management tool. However, things changed when Go modules were officially introduced in Go 1.11. ...

November 15, 2020 · 3 min · Sung-Kyu Yoo

Introducing ACOR: Redis-backed Aho-Corasick Implementation

Introduction String searching is a common problem in software development. Finding a single keyword is straightforward, but what if you need to search for hundreds of keywords simultaneously? Iterating through the text for each keyword would be inefficient. The Aho-Corasick algorithm elegantly solves this problem. Developed by Alfred V. Aho and Margaret J. Corasick in 1975, this algorithm can efficiently search for multiple patterns at once. ACOR is a Go library that implements Aho-Corasick with Redis as the backend storage. In this post, we’ll introduce ACOR, cover the basics of the Aho-Corasick algorithm, and walk through its usage. ...

June 28, 2017 · 3 min · Sung-Kyu Yoo