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
  • 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_unnormalized and tfidf_normalized flags
  • added lccs, wlccs, exact_order, min_gaps, and atc ranking 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_hits counters to SHOW META
  • added total_tokens and disk_bytes counters 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 searchd config 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_weights option 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=threads and 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 xmlpipe data source v1, compat_sphinxql_magics directive, 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, OPTIONidf=tfidf_normalized was 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_time was 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 lcs and 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
News
Downloads
Services
Community
Resources
About