3.3.0 (October 21 2011)

New Features

ENGINE-668 Support for “exactRequires”

The engine now supports a new exactRequires query criterion API the enables customers to refine what is considered an exact or fuzzy match based on the number values in the query. The feature can be used for text, tree, integer, time, double and keyword type dimensions.

If more than one value is present in the query criterion, then currently, any match to any value will cause the item to be considered exact (with decreased relevance score). The new behavior add the option to specify that all values must match for item to be considered exact.

For text type dimensions, each word in the query phrase is considered a value, so the new feature would require that all words be found in the item for that item to be considered exact.

There are two values for exactRequires = "any" | "all"

Default: any

Example:

{
    "criteria": [
        {
            "dimension": "full_text",
            "value": "santa ana winds",
            "exactRequires": "all"
        },
        {
            "dimension": "movie_tags",
            "value": ["cool", "scary"],
            "exactRequires": "all"
        }
    ]
}

ENGINE-549 ENGINE-562 ENGINE-564 ENGINE-565 Support for Feed Providers

Engine Changesets can now be segmented by “Feed Provider” so that it is possible to load a snapshot or delta type changeset that only acts on the items owned by the feed. The admin tool shows action counts per provider as well as feed provider datapoints on the Changesets tab. The Settings tab allows the selection of an existing dimension to use for provider type when displaying the Indices tab and coverage data.

ENGINE-545 Voronoi tessellation support for dense geoloc type dimensions

The engine now supports optional Voronoi tesselation to improve query performance of geoloc type dimensions covering high-density areas such as large metropolitan regions.

Voronoi tesselation is applied to a geoloc dimension definition and works by grouping a fixed number of coordinates into polygons of differing sizes. The default is grid-based polygon creation with no limits to the number of coordinates placed in the polygon. The “grid” value will create equally sized polygons of approximately 1 x 1 degree or an area of about 140 square miles.

There are two values for tesselation = "grid" | "voronoi"

Default: grid

If Voronoi tesselation is applied, the grid size can be tuned from its default by using voronoiMergeDistance that specifies the number of degrees (as a double) to use when creating the polygons.

There are two values for voronoiMergeDistance = "2.5"

Default: 0.5 degrees

For example:

<dimension id="location" type="geoloc" tesselation="voronoi" voronoiMergeDistance="2.5"/>

Improvements

ENGINE-636 Improved Facets API

The facets API introduced in version 3.2.0 has been enhanced. The enhanced API reduces the amount of programming required to coordinate the values used in a search criterion with what needs to be included in the facets request for use in faceted navigation. One of the key improvements is automatic tree navigation. Version 2.5 of Simplicity Widgets supports this new API.

ENGINE-642 Query by Scalar Dimension Id

Previously for scalar dimension types (integer, double, time) a query could only serach by
value. The improvement allows customers to search by the id as well, enabling powerful and elegant range-based searches using interval notation.

For example:

<dimension id="squareFeet" type="integer">
    <element id="0" value="[,500]" name="&lt; 500sqft"/>
    <element id="1" value="[500,1000]" name="500-1.000sqft"/>
    <element id="6" value="[10000,]" name="10.000sqft+"/>
</dimension>

Can now be queried as follows:

{
    "criteria": [
        {
            "dimension": "squareFeet",
            "id": "1"
        }
    ]
}

The result will include any item whose value is between 500 and 1000 inclusive.

ENGINE-644 Scalar Dimension Elements May Be Nested

It is now possible to nest element tags within a scalar dimension type, similar to what is possible with a tree dimension. Using element nesting makes it possible to create groups of value ranges that can be used for faceting.

For example, for a product database in which products are grouped by type, it may be true that each product group has a natural range of prices. For example, houshold goods might be less than $200 but automotive goods could range to more than $200,000.

<dimension id="price" type="integer" key="price">
    <element id="price_household">
        <element id="2" value="[,5]" name="&lt; $ 5"/>
        <element id="3" value="[5,10]" name="$ 5-10"/>
        <element id="4" value="[10,50]" name="$ 10-50"/>
        <element id="5" value="[50,100]" name="$ 50-100"/>
        <element id="6" value="[100,]" name="$ 100+"/>
    </element>
    <element id="price_cars">
        <element id="201" value="[,1000]" name="&lt; $ 1,000"/>
        <element id="202" value="[1000,5000]" name="$ 1-5,000"/>
        <element id="203" value="[5000,25000]" name="$ 5-15,000"/>
        <element id="204" value="[25000,100000]" name="$ 25-100,000"/>
        <element id="205" value="[100000,]" name="$ 100K ++"/>
    </element>
</dimension>

ENGINE-375 Admin Tool Static Files Are Now Served with Status “Not Modified”

This change was made to reduce IO requirements when displaying the admin tool.

ENGINE-632 KML Exports from the admin tool now export using a field type of ”.kml”

Previously, the file type was not specified.

Behavioral Changes

ENGINE-610 Item Count Display Position Changed

The admin tool now shows the count of items in the embedded database on the Changesets tab. Previously, the count was displayed on the Indices tab.

ENGINE-666 ignoreFieldLength

The dimension attribute ignoreFieldLength can be applied to a text type dimension. When the field length is ignored, text matches to a field that is larger than what is searched will be equally relavant than matches with content nearer the length of the query string.

For example, disabling ignoreFieldLength in searches against a field for a movie title such as “Star Wars” will results in the best match to the original Star Wars movie and less relevant matching to a movie with a title such as “Star Wars: The Prequel”.

Usage:

<dimension id="title" type="text" ignoreFieldLength="true"/>

Default: false

Obsolete Features

ENGINE-547 - Query Aggregation Scaling Feature Removed

With the improvements in memory usage of recent versions of the engine, we have removed the query aggregation scaling feature of the engine as it is no longer applicable.

ENGINE-633 - FieldedText Type Dimension

There is now only one type of full text dimension. Use “text” instead of “fieldedText” going forward. The behavior of the fieldedText type dimension is now the behavior of the text type dimension.

Bug Fixes

ENGINE-515 Clearing Dimensions did not refresh Admin page

When all dimensions are cleared in the Admin tool, the page now correctly refreshes to show an empty dimensions file.

ENGINE-572 Full Changeset Type Issue

The Full changeset type was not behaving as documented.