teamtnt/tntsearch
A fully featured full text search engine written in PHP
v5.3.0
3.3M downloads/mo
#3160 most downloaded on Packagist
teamtnt/tntsearch
What this package is like to depend on
Last release 12 days ago
11 Aug 2026
Ships fairly regularly
a new release about every 4 months
Rarely documented
notes for 4 of 72 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
72 releases · first in 2016
4 releases in the last 12 months
see the full history below
Release timeline
72 releases · Apr 2016 to Aug 2026Releases
latest 60 of 72-
v5.3.011 Aug 2026Release notes
Open source →Faster indexing and a couple of correctness fixes.
Performance
- SQLite index creation is ~3× faster.
saveWordlist()no longer inserts each term and catches aUNIQUE-constraint exception (re-preparing every statement per duplicate term); it uses a singleINSERT … ON CONFLICT(term) DO UPDATEupsert and resolves term ids withoutSELECT MAX(id). insert()is ~25× faster for large documents. Each document is now indexed inside a single transaction instead of one implicit commit (fsync) per wordlist/doclist write — so indexing e.g. a PDF perinsert()call no longer pays thousands of fsyncs. (#360)
Fixed
total_documentswas left at0when the number of indexed rows was an exact multiple of the 10,000-row commit batch, because the final transaction was left open and the info-table update rolled back. This corrupted BM25idf = log(count / df)for such indexes.MysqlEnginewordlist upsert accumulatednum_hitsusing the document count instead of the hit count, giving multi-document terms the wrong total occurrence count.
Added
- A
benchmark/harness (seeded Zipfian dataset generator + timers) for measuring index-creation speed.
Full Changelog: v5.2.0...v5.3.0
- SQLite index creation is ~3× faster.
-
v5.2.011 Aug 2026Release notes
Open source →Added
SqliteEngine::createIndex()now creates the storage directory if it doesn't exist (#304)
Fixed
- Preserve the exact match in fuzzy search results —
SqliteEngine&MysqlEngine(#302) - Multibyte-aware Levenshtein distance so fuzzy search works correctly for Cyrillic/UTF-8 terms (#193)
- Boolean
-termnegation now excludes results (AND-NOT) instead of unioning the NOT set, and no longer crashes on two negations (#263, #246, #267) searchBoolean()now returns adocScoreskey, matchingsearch()(fixes "Undefined index: docScores" in Laravel Scout) (#278)filesystemMapIdsToPaths()returnsnullfor an id with no filemap row instead of silently coercing to$res[0](#130)- Highlighter no longer re-highlights the markup it injected for earlier terms (#274)
- Clamp
acos()domain inTNTGeoSearchto avoidNANdistances silently dropping the closest result (#357) RedisEngine::createIndex()no longer throws "must not be accessed before initialization" on the typed$dbhproperty- Fix
selectIndex()/createIndex()writing terms to the previously selected index when switching indexes in one process (Laravel Scout with multiple models)
Full Changelog: v5.1.0...v5.2.0
-
v5.1.011 Aug 2026Release notes
Open source →Fix selectIndex()/createIndex() writing terms to the wrong index (#367).
Switching indexes in a single process (e.g. Laravel Scout with multiple
searchable models) no longer corrupts the previously selected index. -
v5.0.311 Dec 2025Nothing published for this version
-
v5.0.225 Aug 2025Nothing published for this version
-
v5.0.117 Jun 2025Release notes
Open source →What's Changed
- Skip 'non-string' and empty values by @leonardfischer in #342
- Unifying names of interfaces, keep old code for backwards compatibility by @leonardfischer in #341
- Remove duplicate unique index for wordlist table by @BlackbitDevs in #319
Full Changelog: v5.0.0...v5.0.1
-
v5.0.015 Apr 2025Nothing published for this version
-
v4.4.013 Dec 2024Nothing published for this version
-
v4.3.009 Aug 2024Nothing published for this version
-
v4.2.119 Jul 2023Nothing published for this version
-
v4.2.018 Jul 2023Nothing published for this version
-
v4.1.017 Jul 2023Nothing published for this version
-
v4.0.215 Jul 2023Nothing published for this version
-
v4.0.114 Jul 2023Nothing published for this version
-
v4.0.014 Jul 2023Nothing published for this version
-
v3.2.004 May 2023Nothing published for this version
-
v3.1.016 Feb 2023Nothing published for this version
-
v3.0.002 Aug 2022Nothing published for this version
-
v2.9.022 Feb 2022Nothing published for this version
-
v2.8.017 Apr 2021Nothing published for this version
-
v2.7.011 Mar 2021Nothing published for this version
-
v2.6.021 Dec 2020Nothing published for this version
-
v2.5.023 Nov 2020Nothing published for this version
-
v2.4.016 Oct 2020Nothing published for this version
-
v2.3.003 Apr 2020Nothing published for this version
-
v2.2.007 Oct 2019Nothing published for this version
-
v2.1.008 May 2019Nothing published for this version
-
v2.0.011 Feb 2019Nothing published for this version
-
v1.4.018 Oct 2018Nothing published for this version
-
v1.3.613 Sep 2018Nothing published for this version
-
v1.3.510 Aug 2018Nothing published for this version
-
v1.3.418 Jul 2018Nothing published for this version
-
v1.3.329 Jun 2018Nothing published for this version
-
v1.3.203 Jun 2018Nothing published for this version
-
v1.3.131 Jan 2018Nothing published for this version
-
v1.3.018 Dec 2017Nothing published for this version
-
v1.2.008 Dec 2017Nothing published for this version
-
v1.1.018 Sep 2017Nothing published for this version
-
v1.0.709 Sep 2017Nothing published for this version
-
v1.0.607 Jul 2017Nothing published for this version
-
v1.0.511 Jun 2017Nothing published for this version
-
v1.0.411 Jun 2017Nothing published for this version
-
v1.0.311 May 2017Nothing published for this version
-
v1.0.210 Apr 2017Nothing published for this version
-
v1.0.109 Mar 2017Nothing published for this version
-
v1.0.007 Feb 2017Nothing published for this version
-
v0.9.009 Nov 2016Nothing published for this version
-
v0.8.924 Oct 2016Nothing published for this version
-
v0.8.801 Oct 2016Nothing published for this version
-
v0.8.730 Sep 2016Nothing published for this version
-
v0.8.620 Sep 2016Nothing published for this version
-
v0.8.525 Aug 2016Nothing published for this version
-
v0.8.423 Aug 2016Nothing published for this version
-
v0.8.319 Aug 2016Nothing published for this version
-
v0.8.219 Aug 2016Nothing published for this version
-
v0.8.119 Aug 2016Nothing published for this version
-
v0.8.020 Jul 2016Nothing published for this version
-
v0.7.120 Jul 2016Nothing published for this version
-
v0.7.013 Jul 2016Nothing published for this version
-
v0.6.603 Jul 2016Nothing published for this version