Show HN: PHP-fts – Full-text search engine in pure PHP, no extensions
asmodios
54 points
13 comments
May 06, 2026
Related Discussions
Found 5 related stories in 83.0ms across 8,303 title embeddings via pgvector HNSW
- Show HN: Postgres extension for BM25 relevance-ranked full-text search tjgreen · 123 pts · March 31, 2026 · 60% similar
- Show HN: IResearch – C++ search that beat Lucene and Tantivy on their benchmark gnusi · 13 pts · May 20, 2026 · 56% similar
- Omnisearch – A lightweight metasearch engine written in C bitbasher · 15 pts · May 15, 2026 · 56% similar
- Show HN: Omni – Open-source workplace search and chat, built on Postgres prvnsmpth · 152 pts · March 02, 2026 · 51% similar
- Full-Text Search with DuckDB ethagnawl · 111 pts · April 30, 2026 · 51% similar
Discussion Highlights (7 comments)
cpollett
code looks pretty clean. is small and compact, decent benchmarks. might want to consider using an autoloader for classes.
captn3m0
Zend used to maintain a PHP port of Lucene 15 years ago that I used, but not sure what happened to it.
idoubtit
I expected a toy project, but it is a usable library, which required a lot of work. Good job on delivering. A few comments: After reading "composer.json", I thought that the tests used a custom framework. I'm glad the project does not suffer from NIH syndrome, but the dev dependency on PHPUnit should be declared. There should a warning that it's only meant for some Western Latin languages. The normalization of the input is built on a character table for a handful of cases. That's not enough for some Latin languages, e.g. Turkish. And any input with Cyrillic, Arabic, CJK and so on, will be ignored. There is no Unicode normalization or cleanup. Real-life input have many corner cases, e.g. diacritics next to the characters, or invisible characters inside a word to prevent hyphenation. Unless I'm mistaken, this engine would treat the NFD form "fête" as "fe te", instead of the expected "fete", which the NFKD form "fête" produces. I suggest using ext-intl for Unicode normalization, at least as an option. Lastly, I can't think of a use case for this library. I've always had access to some external service (MySQL, Postgresql, Manticore Search, Solr, etc.) or to a PHP extension for a local Sqlite with FTS. Even for hobby projects, I haven't deployed to a shared hosting for more than two decades.
francislavoie
We've been using https://github.com/loupe-php/loupe , works quite well for small-to-medium single-instance apps.
BoxedEmpathy
This is super cool! Thank you!
ksamantha
太厉害了,希望有一天我也能做到
isaisabella
Great start! This bridge between LIKE and a full-blown engine is exactly what's needed for the PHP long-tail.