BloGroonga

2019-09-27

Groonga 9.0.8 has been released

Groonga 9.0.8 has been released!

How to install: Install

Changes

Here are important changes in this release:

  • Improved that Groonga ignores the index being built.

    • We can get correct search results even if the index is under construction.
    • However, the search is slow because of Groonga out of use the index to search in this case.
    • Even in cases where we couldn't get search results until now, we may get ones in this improvement.
  • sub_filter Added a feature that sub_filter executes a sequential search when Groonga is building indexes for the target column or the target column hasn't indexed.

    • If the valid index doesn't exist, sub_filter was an error until now.
    • Even if the valid index doesn't exist, it returns results by this improvement.
    • However if the above situation, sub_filter is slow. Because it is executed as a sequential search.
  • logical_range_filter Fixed a bug that exception about closing the same object twice occurs when we have enough records and the number of records that unmatch filter search criteria is more than the estimated value of it.

Conclusion

See Release 9.0.8 2019-09-27 about detailed changes since 9.0.7

Let's search by Groonga!

2019-08-29

Groonga 9.0.7 has been released

Groonga 9.0.7 has been released!

How to install: Install

Changes

Here are important changes in this release:

  • [httpd] Updated bundled nginx to 1.17.3.

    • Contains security fix for CVE-2019-9511, CVE-2019-9513, and CVE-2019-9516.
  • Fixed a bug that returns an empty result when we specify initial into a stage of a dynamic column and search for using index.

  • Fixed a bug that the configure phase didn't detect libedit despite installing it.

  • select Fixed a bug that --offset and --limit options didn't work with --sort_keys and --slices options.

  • select Fixed a bug that search result is empty when the result of select command is huge.

  • Fixed a bug that doesn't use a suitable index when prefix search and suffix search.

Conclusion

See Release 9.0.7 2019-08-29 about detailed changes since 9.0.6

Let's search by Groonga!

2019-08-05

Groonga 9.0.6 has been released

Groonga 9.0.6 has been released!

How to install: Install

IMPORTANT NOTICE

This release contains fixes for some critical bugs which affect search result.

Changes

Here are important changes in this release:

  • Fixed a bug that a search error occurs when search escalation is executed.

  • Fixed a bug that slices returns the records which should not be matched when we use nested equal condition.

  • Added support for Debian 10 (buster)

Fixed a bug that an search error occurs when search escalation is executed

In this release, the search escalation related bug was fixed. This bug causes error and it didn't return matched records.

This bug is caused when the following conditions are met:

  • The lexcon table is TABLE_HASH_KEY
  • Use @ operator
  • Search escalation is occurred

Fixed a bug that slices returns the records which should not be matched when we use nested equal condition

In this release, slices parameter related bug was fixed. This bug may return the records which should not be matched. This bug is caused when the following conditions is met:

  • Use select command with slices parameter.

Added support for Debian 10 (buster)

In this release, Debian 10 (buster - Released at July 6, 2019) has been supported. Now, you can install Groonga in similar way on Debian 9 (stretch).

Conclusion

See Release 9.0.6 2019-08-05 about detailed changes since 9.0.5

Let's search by Groonga!

2019-07-30

Groonga 9.0.5 has been released

Groonga 9.0.5 has been released!

How to install: Install

IMPORTANT NOTICE

After Groonga 9.0.5 has been released, some critical bugs are found which affects search results. We will release the new version which fixes the following bugs. Please do not use Groonga 9.0.5, and recommends to upgrade to fixed version in the future.

Here are the found bugs:

  • The search query causes error and it doesn't return matched records. This bug is caused when the following conditions are met.

    • The lexcon table is TABLE_HASH_KEY
    • Use @ operator
    • Search escalation is occurred
  • slices returns the records which should not be matched.

    • Use select command with slices parameter.

Changes

Here are important changes in this release:

  • logical_range_filter Improved that only apply an optimization when the search target shard is large enough.

  • normalizers Added new option unify_to_katakana for NormalizerNFKC100.

  • select Added drilldowns support as a slices parameter.

  • select Added columns support as a slices parameter.

  • select Improved that we can reference _score in the initial stage for slices parameter.

  • highlight_html, snippet_html Improved that extract a keyword also from an expression of before executing a slices when we specify the slices parameter.

  • Improved that collect scores also from an expression of before executing a slices when we specify the slices parameter.

  • Stopped add 1 in score automatically when add posting to posting list.

  • Added support for index search for nested equal like XXX.YYY.ZZZ == AAA.

  • Reduce rehash interval when we use hash table.

  • Improved to we can add tag prefix in the query log.

  • Added support for Apache Arrow 1.0.0.

  • Added support for Amazon Linux 2.

  • Fixed a bug that vector values of JSON like "[1, 2, 3]" are not indexed.

  • Fixed wrong parameter name in table_create tests.

  • Fixed a bug that drilldown label is empty when a drilldown command is executed by command_version=3.

  • Fixed build error for Windows package on MinGW.

  • Fixed install missing COPYING for Windows package on MinGW.

  • Fixed a bug that don't highlight when specifing non-test query as highlight target keyword.

  • Fixed a bug that broken output of MessagePack format of object_inspect.

  • Fixed a bug that broken output of MessagePack format of index_column_diff.

  • Fixed a bug that broken output of MessagePack format of suggest.

  • Fixed a bug that allocate size by realloc isn't enough when a search for a table of patricia trie and so on.

  • Fix a bug that groonga.repo is removed when updating 1.5.0 from groonga-release version before 1.5.0-1.

logical_range_filter Improved that only apply an optimization when the search target shard is large enough.

This feature reduces that duplicate search result between offset when we use same sort key. Large enough threshold is 10000 records by default.

normalizers Added new option unify_to_katakana for NormalizerNFKC100

This option normalize hiragana to katakana. For example, ぁ ぃ ぇ ぉ` is normalized toヴァヴィヴヴェヴォ``.

We can identify below terms by unify_to_katakana and unify_katakana_v_sounds.

  • ゔぁゔぃゔゔぇゔぉ
  • ばびぶべぼ
  • ヴァヴィヴヴェヴォ
  • バビブベボ

  • First, we apply unify_to_katakana.

    • ゔぁゔぃゔゔぇゔぉ -> ヴァヴィヴヴェヴォ
    • ばびぶべぼ -> バビブベボ
    • ヴァヴィヴヴェヴォ -> ヴァヴィヴヴェヴォ
    • バビブベボ -> バビブベボ
  • Second, we apply unify_katakana_v_sounds.

    • ヴァヴィヴヴェヴォ -> バビブベボ
    • バビブベボ -> バビブベボ

Conclusion

See Release 9.0.5 2019-07-30 about detailed changes since 9.0.4

Let's search by Groonga!

2019-06-29

Groonga 9.0.4 has been released

Groonga 9.0.4 has been released!

How to install: Install

Changes

Here are important changes in this release:

  • Added support for array literal with multiple elements.

  • Added support equivalence operation of a vector.

  • logical_range_filter Increase outputting logs into query log.

  • grndb Added support new option --since

  • query Added default_operator.

  • [optimizer] Fix a bug that execution error when specified multiple filter conditions and like xxx.yyy=="keyword".

  • Added missing LICENSE files in Groonga package for Windows(VC++ version).

  • Added UCRT runtime into Groonga package for Windows(VC++ version).

  • window_function Fix a memory leak.

    • This occurs when multiple windows with sort keys are used.

Added support for array literal with multiple elements.

We can use array literal with multiple elements into filter condition as below.

table_create Values TABLE_NO_KEY

column_create Values numbers COLUMN_VECTOR Int32

load --table Values
[
{"numbers": [2, 1, 3]},
{"numbers": [2, 3, 4]},
{"numbers": [8, 9, -1]}
]

select Values  \
  --filter 'numbers == [2, 3, 4]'  \
  --output_columns 'numbers'
[[0,0.0,0.0],[[[1],[["numbers","Int32"]],[[2,3,4]]]]]

Added support equivalence operation of a vector.

We can use equivalencs operation for a vector as below.

table_create Values TABLE_NO_KEY

column_create Values numbers COLUMN_VECTOR Int32

load --table Values
[
{"numbers": [2, 1, 3]},
{"numbers": [2, 3, 4]},
{"numbers": [8, 9, -1]}
]

select Values  \
  --filter 'numbers == [2, 3, 4]'  \
  --output_columns 'numbers'
[[0,0.0,0.0],[[[1],[["numbers","Int32"]],[[2,3,4]]]]]

logical_range_filter Increase outputting logs into query log.

logical_range_filter command comes to output a log for below timing.

  • After filtering by logical_range_filter.
  • After sorting by logical_range_filter.
  • After applying dynamic column.
  • After output results.

We can see how much has been finished this command by this feature.

grndb Added support new option --since

We can specify a scope of an inspection.

We can specify the modified time as ISO 8601 format or -NUNIT format such as -3days or -2.5weeks format.

Here is an example that specifies –since option in ISO 8601 format:

% grmdb check --since=2019-06-24T18:16:22 /var/lib/groonga/db/db

In above example, the objects which are modified after 2019-06-24T18:16:22 are checked.

Here is an example that specifies –since option in -NUNIT format:

% grmdb check --since=-7d /var/lib/groonga/db/db

In above example, the objects which are modified in recent 7 days are checked.

Please also refer to grndb#since.

query Added default_operator.

We can customize operator when "keyword1 keyword2". "keyword1 Keyword2" is AND operation in default.

We can change "keyword1 keyword2"'s operator except AND as below.

table_create Products TABLE_NO_KEY

column_create Products name COLUMN_SCALAR ShortText

load --table Products
[
["name"],
["Groonga"],
["Mroonga"],
["Rroonga"],
["PGroonga"],
["Ruby"],
["PostgreSQL"]
]

select \
  --table Products \
  --filter 'query("name", "Groonga Mroonga", {"default_operator": "OR"})'
[
  [
    0,
    0.0,
    0.0
  ],
  [
    [
      [
        3
      ],
      [
        [
          "_id",
          "UInt32"
        ],
        [
          "name",
          "ShortText"
        ]
      ],
      [
        1,
        "Groonga"
      ],
      [
        4,
        "PGroonga"
      ],
      [
        2,
        "Mroonga"
      ]
    ]
  ]
]

Conclusion

See Release 9.0.4 2019-06-29 about detailed changes since 9.0.3

Let's search by Groonga!