we're using SQL Server 2008 R2 Full-Text Search over a table with 2.6 million records. The search performance often is poor, it follows the commonly reported pattern: cold system/first run ~10+ sec, subsequent runs ~1-2 sec. This is inline with results reported in the following article dated of Feb, 2013:
So You Think You Can Search – Comparing Microsoft SQL Server FTS and Apache Lucene
The article shows the following speed comparison results using Wikipedia dump data:
Indexing speed, size and single query execution time using: Lucene MS SQL FTS Indexing Speed 3 MB/sec 1 MB/sec Index Size 10-25% 25-30% Simple query < 20 ms < 20 ms Query With Custom Score < 4 sec > 20 sec
Parallel Query Executions (10 threads, average execution time per query in ms): MS SQL FTS Lucene (File System) Lucene (RAM) Cold System: Simple Query 56 643 21 Boost Query 19669* 859 27 Second executions: Simple Query 14 8 < 5 Boost Query 465 17 9 *average time, the very first query could be executed up to 2 min(!)
My questions are:
Since there were several major SQL Server releases since the article was published on Feb 8, 2013, can someone report any FTS performance improvements over same data (preferably of 1+ million records) when they migrated to more recent SQL Server versions (2012, 2014 and 2016)?
Do more recent SQL Server versions support FTS catalogs/indexes placed in RAM just as solr/lucene do?
UPDATE: in our scenario we seldom insert new data into FT catalog linked table, but run read only searches very often. So, I don't think SQL constantly rebuilding FTS index is the issue.