Version 2.2.1-beta, 13 nov 2013
Major new features
- added ALTER TABLE that can add attributes to disk and RT indexes on the fly
- added ATTACH support for non-empty RT target indexes
- added Chinese segmentation with RLP (Rosette Linguistics platform) support
- added English, German lemmatization support
- added HAVING support to SELECT statement, filtering on aggregate values is now possible
- added N-best GROUP BY extension to return more than 1 row per group
- added RT index support for index_field_lengths=1, bitfield attributes, and multiforms
- added CSV, TSV data sources
- added full JSON attributes support, arbitrary JSON documents (with subobjects etc) can now be stored
- added in-place JSON updates for scalar values
- added index type=template directive (allows CALL KEYWORDS, CALL SNIPPETS)
- added ondisk_attrs, ondisk_attrs_default directives that keep attributes on disk
- added table functions mechanism, and REMOVE_REPEATS() table function
- added support for arbitrary expressions in WHERE for DELETE queries
Ranking related features
- added OPTION local_df=1, an option to aggregate IDFs over local indexes (shards)
- added UDF XXX_reinit() method to reload UDFs with
workers=prefork - added comma-separated syntax to OPTION
idf,tfidf_unnormalizedandtfidf_normalizedflags - added
lccs,wlccs,exact_order,min_gaps, andatcranking factors - added
sphinx_get_XXX_factors(), a faster interface to access PACKEDFACTORS() in UDFs - added support for exact_hit, exact_order field factors when using more than 32 fields (exact_hit, exact_order)
Instrumentation features
- added DESCRIBE and --dumpheader support for tokencount attributes (generated by index_field_lengths=1 directive)
- added RT index query profile, percentages, totals to SHOW PROFILE
- added
predicted_time,dist_predicted_time,fetched_docs,fetched_hitscounters to SHOW META - added
total_tokensanddisk_bytescounters to SHOW INDEX STATUS
General features
- added ALL(), ANY() and INDEXOF() functions for JSON subarrays
- added MIN_TOP_WEIGHT(), MIN_TOP_SORTVAL() functions
- added TOP() aggregate function to expression ranker
- added a check for duplicated tail hit positions in indextool --check
- added compact_in option to query_log_format=sphinxql
- added distance units and calculation method options to GEODIST() function, optimized it a lot
- added embedded stopwords/exceptions/wordforms to
--dumpheader - added indexer --nohup and indextool --rotate switches to check index files before rotating them
- added scientific notation support for JSON attributes (as per RFC 4627)
- added several SphinxQL statements to fix MySQL Workbench connection issues (LIKE for session variables, etc.)
- added shutdown_timeout directive to
searchdconfig section - added signed values support for INTEGER() and UINT() function
- added snippet generation options to SNIPPET() function
- added string filter support in distributed queries, SphinxAPI, SphinxQL query log
- added support for mixed distributed and local index queries (SELECT * FROM dist1,dist2,local3), and
index_weightsoption for that case
Optimizations, behavior changes, and removals
- optimized JSON attributes access (1.12x to 2.0x+ total query speedup depending on the JSON data)
- optimized SELECT (1.02x to 3.5x speedup, depending on index schema size)
- optimized UPDATE (up to 3x faster on big updates)
- optimized away internal threads table mutex contention with
workers=threadsand 1000s of threads - changed [emptyword -foo] query behavior in cases when emptyword is a stopword or an overshort word, made such queries computable rather than erroneous
- changed post-morphology wordforms behavior, now it works as
'if ( stem(token)==stem(abc) ) emit(def)' - changed the config defaults to
id64,dict=keywords,charset_type=utf-8,enable_star=1,workers=threads,mem_limit=128M,rt_mem_limit=128M - changed the default SphinxAPI matching mode to SPH_MATCH_EXTENDED2
- disallowed dashes in index names in API requests (just like in SphinxQL)
- removed legacy
xmlpipedata source v1,compat_sphinxql_magicsdirective,SetWeights()SphinxAPI call, and SPH_SORT_CUSTOM SphinxAPI mode
Bug fixes
- fixed #1734, unquoted literal in json subscript could cause a crash, returns 'unknown column' now.
- fixed #1683, under certain conditions stopwords were not taken into account in RT indexes
- fixed #1648, #1644, when using AOT lemmas with snippet generation, not all the forms got highlighted
- fixed #1549, OPTION
idf=tfidf_normalizedwas ignored for distributed queries - fixed that ORDER BY RAND() was not affected by
index_weights - fixed that float updates with integer values in SphinxQL mistakenly set the float to 0
- fixed that
predicted_timewas not accumulated with dist_threads - fixed GROUP_CONCAT result length limit (was implicitly limited by 1024 bytes)
- fixed agent query distribution in HA mirroring
- fixed duplicates check for quorum operator, it works ok now for expanded keywords
- fixed off-by-1 query positions of words in indexes with wordforms and blended characters
- fixed wrong
lcsand min_best_span_pos ranking factor values when any expansion (expand_keywords or lemmatize) occurred - fixed a crash while creating indexes with sql_joined_field
