Kouhei Sutou
null+****@clear*****
Thu Dec 1 12:20:20 JST 2016
Kouhei Sutou 2016-12-01 12:20:20 +0900 (Thu, 01 Dec 2016) New Revision: ddd6a618b05439c1a8b5fb1cfc8ecef760c4d3e6 https://github.com/groonga/groonga.org/commit/ddd6a618b05439c1a8b5fb1cfc8ecef760c4d3e6 Message: Add PGroonga 1.1.9 release announce Added files: en/_posts/2016-11-30-pgroonga-1.1.9.md images/blog/en/2016-11-30-pgroonga-1.1.9/en-index-creation.svg images/blog/en/2016-11-30-pgroonga-1.1.9/en-search-without-groonga.svg images/blog/en/2016-11-30-pgroonga-1.1.9/en-search-without-pg-trgm.svg images/blog/en/2016-11-30-pgroonga-1.1.9/en-search.svg images/blog/en/2016-11-30-pgroonga-1.1.9/ja-index-creation.svg images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search-without-groonga.svg images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search-without-pg-bigm.svg images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search.svg ja/_posts/2016-11-30-pgroonga-1.1.9.md Added: en/_posts/2016-11-30-pgroonga-1.1.9.md (+118 -0) 100644 =================================================================== --- /dev/null +++ en/_posts/2016-11-30-pgroonga-1.1.9.md 2016-12-01 12:20:20 +0900 (8584c0c) @@ -0,0 +1,118 @@ +--- +layout: post.en +title: PGroonga (fast full text search module for PostgreSQL) 1.1.9 has been released +description: PGroonga (fast full text search module for PostgreSQL) 1.1.9 has been released! +--- + +## PGroonga (fast full text search module for PostgreSQL) 1.1.9 has been released + +[PGroonga](httsp://pgroonga.github.io/) (píːzí:lúnɡά) (fast full text search module for PostgreSQL) 1.1.9 has been released! + +See [PGroonga 1.0.0 release announce]({% post_url 2015-10-29-pgroonga-1.0.0 %}) about PGroonga. + +## Benchmark + +We have published benchmark result with Wikipedia data to the official site. + +Here are compared modules: + + * textsearch in PostgreSQL + * pg\_trgm in contrib + * pg\_bigm - third party module + +English Wikipedia data are used for textsearch and pg\_trgm because they don't support Asian languages such as Japanese. + +Japanese Wikipedia data are used for pg\_bigm because it supports Asian languages such as Japanese. + +### PGroonga, textsearch and pg\_trgm + +This section describes about benchmark result summary with PGroonga, textsearch and pg\_trgm. See [PGroonga versus textsearch and pg\_trgm](https://pgroonga.github.io/reference/pgroonga-versus-textsearch-and-pg-trgm.html) for details. + +Here is search time benchmark result. + +pg\_trgm is very slower than PGroonga and textsearch as the following. (Bar length means elapsed time in ms. It means that shorter bar means more faster.) + + + +Here is the graph without pg\_trgm. PGroonga and textsearch have similar performance. "Groonga" is a case that search by Groonga directly by [`pgroonga.command` function](https://pgroonga.github.io/reference/functions/pgroonga-command.html). Groonga is the full text search engine used by PGroonga. Groonga is 10x faster than PGroonga and textsearch. + + + +Here is index creation time benchmark. + +PGroonga is the most fastest module as the following. PGroonga is about 2x faster than textsearch and about 30% faster than pg\_trgm. + + + +### PGroonga and pg\_bigm + +This section describes about benchmark result summary with PGroonga and pg\_bigm. See [PGroonga versus pg\_bigm](https://pgroonga.github.io/reference/pgroonga-versus-pg-bigm.html) for details. + +Here is search time benchmark result. + +pg\_bigm is very slower than PGroonga when query contains 3 or more characters. (Bar length means elapsed time in ms. It means that shorter bar means more faster.) + + + +Here is index creation time benchmark. + +PGroonga is about 75% faster than pg\_bigm as the following. + + + +## Changes + +Here are changes since [1.1.1](/en/blog/2016/8/31/pgroonga-1.1.1.html). We recommend you to upgrade to 1.1.9 because some search related problems are fixed and new features such as replication support and Zstandard support are implemented. See links in the list for details. + + * [Experimental] Supported WAL. PGroonga isn't crash safe but supports [replication](https://pgroonga.github.io/en/reference/replication.html). PostgreSQL 9.6 or later and MessagePack are needed. + * [[Windows](https://pgroonga.github.io/install/windows.html)] Fixed a bug that `SELECT` may be crashed. + * Supported `Windows-1252` encoding. + * [[Windows](https://pgroonga.github.io/install/windows.html)] Fixed a bug that `CREATE EXTENSION pgroonga` is failed. + * [[Windows](https://pgroonga.github.io/install/windows.html)] Upgraded bundled Groonga to 6.1.1. + * [[Windows](https://pgroonga.github.io/install/windows.html)] Supported packages for both PostgreSQL 9.5.5 and 9.6.1. + * Supported `integer` in `IN`. + * Fixed a bug that some records may be found after `UPDATE` or `DELETE`. (Reported by yongxianggao-chanjet) + * Fixed a memory leak of [`pgroonga.score` function](https://pgroonga.github.io/reference/functions/pgroonga-score.html) (Reported by Takahashi) + * Fixed a bug that PGroonga indexes created in non default tablespace are removed on `VACUUM`. (Reported by yongxianggao-chanjet) + * Supported tablespace. + * Disabled index only scan when there are one or more large record. + * [[Ubuntu](https://pgroonga.github.io/install/ubuntu.html)] Dropped Wily Werewolf (15.10) support. + * [[Ubuntu](https://pgroonga.github.io/install/ubuntu.html)] Supported Yakkety Yak (16.10). + * Supported text data compression by Zstandard. + * Supported text data compression by zlib. + * Supported PGroonga version logging on startup. + * Added [`pgroonga_tuple_is_alive` Groonga function](https://pgroonga.github.io/reference/groonga-functions/pgroonga-tuple-is-alive.html). You can remove dead tuples in PostgreSQL by this Groonga function. You can use this Groonga function with [`groonga.command` function](https://pgroonga.github.io/reference/functions/pgroonga-command.html). + * Reduced memory usage on `CREATE INDEX`. + * Supported backtrace logging on crash. (It doesn't work on Windows.) + * Supported logging with PID. + * Supported optimization when the following functions are called with constant arguments: + * [`pgroonga.table_name` function](https://pgroonga.github.io/reference/functions/pgroonga-table-name.html) + * [`pgroonga.snippet_html` function](https://pgroonga.github.io/reference/functions/pgroonga-snippet-html.html) + * [`pgroonga.highlight_html` function](https://pgroonga.github.io/reference/functions/pgroonga-highlight-html.html) + * [`pgroonga.match_positions_byte` function](https://pgroonga.github.io/reference/functions/pgroonga-match-positions-byte.html) + * [`pgroonga.match_positions_character` function](https://pgroonga.github.io/reference/functions/pgroonga-match-positions-character.html) + * [`pgroonga.query_extract_keywords` function](https://pgroonga.github.io/reference/functions/pgroonga-query-extract-keywords.html) + * Added [`pgroonga.escape` function](https://pgroonga.github.io/reference/functions/pgroonga-escape.html). It escapes script syntax value. + * Added [`pgroonga.query_escape` function](https://pgroonga.github.io/reference/functions/pgroonga-query-escape.html). It escapes query syntax value. + * Added [`pgroonga.command_escape_escape` function](https://pgroonga.github.io/reference/functions/pgroonga-query-escape.html). It escaped Groonga command argument value. + * Changed the return type of [`pgroonga.table_name` function](https://pgroonga.github.io/reference/functions/pgroonga-table-name.html) to `text` from `cstring`. + * Added a new call style to [`pgroonga.command` function](https://pgroonga.github.io/reference/functions/pgroonga-command.html). You can pass Groonga command arguments as an array. If you specify arguments an array, arguments are escaped automatically. It prevents Groonga command injection security risk. + * Supported query log. Use [`pgroonga.query_log_path` parameter](https://pgroonga.github.io/reference/parameters/query-log-path.html) to control query log location and enabling/disabling query log. + +## How to upgrade + +This version is compatible with 1.1.1 or later. Upgrade by steps in ["Compatible case" in Upgrade document](https://pgroonga.github.io/upgrade/#compatible-case). + +## Announce + +There is [PGroonga session](http://www.pgconf.asia/EN/day-2/#A4) in PGConf.ASIA 2016 DAY 2. In this session, not only difference between PGroonga and other modules but also how to implement replication by generic WAL API added since PostgreSQL 9.6 are described. The slide for the session has been published: + + * [PGroonga - Make PostgreSQL fast full text search platform for all languages!](https://slide.rabbit-shocker.org/authors/kou/pgconf-asia-2016/) + +If you're interested in PGroonga, please go to the session. + +## Conclusion + +New PGroonga version has been released. + +Try PGroonga when you want to perform fast full text search against all languages on PostgreSQL! Added: images/blog/en/2016-11-30-pgroonga-1.1.9/en-index-creation.svg (+207 -0) 100644 =================================================================== --- /dev/null +++ images/blog/en/2016-11-30-pgroonga-1.1.9/en-index-creation.svg 2016-12-01 12:20:20 +0900 (08c76ad) @@ -0,0 +1,207 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.0 patchlevel 5 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,449.4 L575.0,449.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,449.4 M575.0,449.4 '/> <g transform="translate(81.6,453.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,386.5 L575.0,386.5 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,386.5 M575.0,386.5 '/> <g transform="translate(81.6,390.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0.5</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,323.6 L575.0,323.6 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,323.6 M575.0,323.6 '/> <g transform="translate(81.6,327.5)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,260.7 L575.0,260.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,260.7 M575.0,260.7 '/> <g transform="translate(81.6,264.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1.5</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,197.9 L575.0,197.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,197.9 M575.0,197.9 '/> <g transform="translate(81.6,201.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 2</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,135.0 L575.0,135.0 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,135.0 M575.0,135.0 '/> <g transform="translate(81.6,138.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 2.5</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,72.1 L575.0,72.1 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,72.1 M575.0,72.1 '/> <g transform="translate(81.6,76.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 3</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(429.5,88.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Data: English Wikipedia</tspan></text> + </g> + <g transform="translate(429.5,106.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Size: About 33GiB</tspan></text> + </g> + <g transform="translate(429.5,124.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Max text size: 1MiB</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(17.0,260.8) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Elapsed time (hour)</tspan></text> + </g> + <g transform="translate(35.0,260.8) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >(Shorter is better)</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(332.4,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Module</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(332.4,49.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Index creation</tspan></text> + </g> +</g> + <g id="gnuplot_plot_1" ><title>PGroonga</title> +<g fill="none" color="white" stroke="black" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(186.8,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >PGroonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '152.9,22.5 178.5,22.5 178.5,13.5 152.9,13.5 '/> + </g> + <path stroke='black' d='M152.9,22.5 L178.5,22.5 L178.5,13.5 L152.9,13.5 L152.9,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '244.5,449.4 299.2,449.4 299.2,273.2 244.5,273.2 '/> + </g> + <path stroke='black' d='M244.5,449.4 L244.5,273.3 L299.1,273.3 L299.1,449.4 L244.5,449.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_2" ><title>textsearch</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(312.0,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >textsearch</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '278.1,22.5 303.7,22.5 303.7,13.5 278.1,13.5 '/> + </g> + <path stroke='black' d='M278.1,22.5 L303.7,22.5 L303.7,13.5 L278.1,13.5 L278.1,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '305.2,449.4 359.8,449.4 359.8,84.6 305.2,84.6 '/> + </g> + <path stroke='black' d='M305.2,449.4 L305.2,84.7 L359.7,84.7 L359.7,449.4 L305.2,449.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_3" ><title>pg_trgm</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(437.2,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >pg_trgm</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '403.3,22.5 428.9,22.5 428.9,13.5 403.3,13.5 '/> + </g> + <path stroke='black' d='M403.3,22.5 L428.9,22.5 L428.9,13.5 L403.3,13.5 L403.3,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '365.8,449.4 420.5,449.4 420.5,222.9 365.8,222.9 '/> + </g> + <path stroke='black' d='M365.8,449.4 L365.8,223.0 L420.4,223.0 L420.4,449.4 L365.8,449.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> +<g fill="none" color="white" stroke="rgb( 78, 154, 6)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> + Added: images/blog/en/2016-11-30-pgroonga-1.1.9/en-search-without-groonga.svg (+308 -0) 100644 =================================================================== --- /dev/null +++ images/blog/en/2016-11-30-pgroonga-1.1.9/en-search-without-groonga.svg 2016-12-01 12:20:20 +0900 (4b96aaa) @@ -0,0 +1,308 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.0 patchlevel 5 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,386.4 L575.0,386.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,386.4 M575.0,386.4 '/> <g transform="translate(106.5,390.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,351.2 L575.0,351.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,351.2 M575.0,351.2 '/> <g transform="translate(106.5,355.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 10000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,316.1 L575.0,316.1 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,316.1 M575.0,316.1 '/> <g transform="translate(106.5,320.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 20000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,280.9 L575.0,280.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,280.9 M575.0,280.9 '/> <g transform="translate(106.5,284.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 30000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,245.7 L575.0,245.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,245.7 M575.0,245.7 '/> <g transform="translate(106.5,249.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 40000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,210.5 L575.0,210.5 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,210.5 M575.0,210.5 '/> <g transform="translate(106.5,214.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 50000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,175.4 L575.0,175.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,175.4 M575.0,175.4 '/> <g transform="translate(106.5,179.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 60000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,140.2 L575.0,140.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,140.2 M575.0,140.2 '/> <g transform="translate(106.5,144.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 70000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,105.0 L575.0,105.0 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,105.0 M575.0,105.0 '/> <g transform="translate(106.5,108.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 80000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,69.9 L575.0,69.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,69.9 M575.0,69.9 '/> <g transform="translate(106.5,73.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 90000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,34.7 L575.0,34.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,34.7 M575.0,34.7 '/> <g transform="translate(106.5,38.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 100000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M206.8,386.4 M206.8,34.7 '/> <g transform="translate(206.8,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >animation</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M298.9,386.4 M298.9,34.7 '/> <g transform="translate(298.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >database</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M390.9,386.4 M390.9,34.7 '/> <g transform="translate(390.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >PostgreSQL</tspan></text> + </g> + <g transform="translate(390.9,426.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >OR</tspan></text> + </g> + <g transform="translate(390.9,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >MySQL</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M483.0,386.4 M483.0,34.7 '/> <g transform="translate(483.0,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >America</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(17.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Elapsed time (ms)</tspan></text> + </g> + <g transform="translate(35.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >(Shorter is better)</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(344.9,435.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(344.9,453.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(344.9,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Query</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + <g id="gnuplot_plot_1" ><title>PGroonga</title> +<g fill="none" color="white" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(199.3,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >PGroonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '165.4,22.5 191.0,22.5 191.0,13.5 165.4,13.5 '/> + </g> + <path stroke='black' d='M165.4,22.5 L191.0,22.5 L191.0,13.5 L165.4,13.5 L165.4,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '173.5,386.4 194.3,386.4 194.3,385.7 173.5,385.7 '/> + </g> + <path stroke='black' d='M173.5,386.4 L173.5,385.8 L194.2,385.8 L194.2,386.4 L173.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '265.5,386.4 286.3,386.4 286.3,383.8 265.5,383.8 '/> + </g> + <path stroke='black' d='M265.5,386.4 L265.5,383.9 L286.2,383.9 L286.2,386.4 L265.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '357.6,386.4 378.4,386.4 378.4,386.3 357.6,386.3 '/> + </g> + <path stroke='black' d='M357.6,386.4 L378.3,386.4 L357.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '449.6,386.4 470.4,386.4 470.4,381.7 449.6,381.7 '/> + </g> + <path stroke='black' d='M449.6,386.4 L449.6,381.8 L470.3,381.8 L470.3,386.4 L449.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_2" ><title>textsearch</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(324.5,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >textsearch</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '290.6,22.5 316.2,22.5 316.2,13.5 290.6,13.5 '/> + </g> + <path stroke='black' d='M290.6,22.5 L316.2,22.5 L316.2,13.5 L290.6,13.5 L290.6,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '196.5,386.4 217.3,386.4 217.3,382.8 196.5,382.8 '/> + </g> + <path stroke='black' d='M196.5,386.4 L196.5,382.9 L217.2,382.9 L217.2,386.4 L196.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '288.5,386.4 309.3,386.4 309.3,384.2 288.5,384.2 '/> + </g> + <path stroke='black' d='M288.5,386.4 L288.5,384.3 L309.2,384.3 L309.2,386.4 L288.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '380.6,386.4 401.4,386.4 401.4,386.3 380.6,386.3 '/> + </g> + <path stroke='black' d='M380.6,386.4 L401.3,386.4 L380.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '472.6,386.4 493.4,386.4 493.4,382.1 472.6,382.1 '/> + </g> + <path stroke='black' d='M472.6,386.4 L472.6,382.2 L493.3,382.2 L493.3,386.4 L472.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_3" ><title>pg_trgm</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(449.7,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >pg_trgm</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '415.8,22.5 441.4,22.5 441.4,13.5 415.8,13.5 '/> + </g> + <path stroke='black' d='M415.8,22.5 L441.4,22.5 L441.4,13.5 L415.8,13.5 L415.8,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '219.5,386.4 240.3,386.4 240.3,231.6 219.5,231.6 '/> + </g> + <path stroke='black' d='M219.5,386.4 L219.5,231.7 L240.2,231.7 L240.2,386.4 L219.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '311.5,386.4 332.3,386.4 332.3,270.2 311.5,270.2 '/> + </g> + <path stroke='black' d='M311.5,386.4 L311.5,270.3 L332.2,270.3 L332.2,386.4 L311.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '403.6,386.4 424.4,386.4 424.4,385.5 403.6,385.5 '/> + </g> + <path stroke='black' d='M403.6,386.4 L403.6,385.6 L424.3,385.6 L424.3,386.4 L403.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '495.6,386.4 516.4,386.4 516.4,62.7 495.6,62.7 '/> + </g> + <path stroke='black' d='M495.6,386.4 L495.6,62.8 L516.3,62.8 L516.3,386.4 L495.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> +<g fill="none" color="white" stroke="rgb( 78, 154, 6)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> + Added: images/blog/en/2016-11-30-pgroonga-1.1.9/en-search-without-pg-trgm.svg (+281 -0) 100644 =================================================================== --- /dev/null +++ images/blog/en/2016-11-30-pgroonga-1.1.9/en-search-without-pg-trgm.svg 2016-12-01 12:20:20 +0900 (6f1755e) @@ -0,0 +1,281 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.0 patchlevel 5 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,386.4 L575.0,386.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,386.4 M575.0,386.4 '/> <g transform="translate(89.9,390.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,336.2 L575.0,336.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,336.2 M575.0,336.2 '/> <g transform="translate(89.9,340.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 200</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,285.9 L575.0,285.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,285.9 M575.0,285.9 '/> <g transform="translate(89.9,289.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 400</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,235.7 L575.0,235.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,235.7 M575.0,235.7 '/> <g transform="translate(89.9,239.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 600</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,185.4 L575.0,185.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,185.4 M575.0,185.4 '/> <g transform="translate(89.9,189.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 800</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,135.2 L575.0,135.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,135.2 M575.0,135.2 '/> <g transform="translate(89.9,139.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,84.9 L575.0,84.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,84.9 M575.0,84.9 '/> <g transform="translate(89.9,88.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1200</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,34.7 L575.0,34.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,34.7 M575.0,34.7 '/> <g transform="translate(89.9,38.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1400</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M193.6,386.4 M193.6,34.7 '/> <g transform="translate(193.6,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >animation</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M288.9,386.4 M288.9,34.7 '/> <g transform="translate(288.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >database</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M384.3,386.4 M384.3,34.7 '/> <g transform="translate(384.3,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >PostgreSQL</tspan></text> + </g> + <g transform="translate(384.3,426.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >OR</tspan></text> + </g> + <g transform="translate(384.3,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >MySQL</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M479.6,386.4 M479.6,34.7 '/> <g transform="translate(479.6,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >America</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(17.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Elapsed time (ms)</tspan></text> + </g> + <g transform="translate(35.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >(Shorter is better)</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(336.6,435.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(336.6,453.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(336.6,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Query</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + <g id="gnuplot_plot_1" ><title>PGroonga</title> +<g fill="none" color="white" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(191.0,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >PGroonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '157.1,22.5 182.7,22.5 182.7,13.5 157.1,13.5 '/> + </g> + <path stroke='black' d='M157.1,22.5 L182.7,22.5 L182.7,13.5 L157.1,13.5 L157.1,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '159.0,386.4 180.5,386.4 180.5,342.8 159.0,342.8 '/> + </g> + <path stroke='black' d='M159.0,386.4 L159.0,342.9 L180.4,342.9 L180.4,386.4 L159.0,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '254.4,386.4 275.9,386.4 275.9,211.0 254.4,211.0 '/> + </g> + <path stroke='black' d='M254.4,386.4 L254.4,211.1 L275.8,211.1 L275.8,386.4 L254.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '349.7,386.4 371.3,386.4 371.3,384.8 349.7,384.8 '/> + </g> + <path stroke='black' d='M349.7,386.4 L349.7,384.9 L371.2,384.9 L371.2,386.4 L349.7,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '445.1,386.4 466.6,386.4 466.6,59.7 445.1,59.7 '/> + </g> + <path stroke='black' d='M445.1,386.4 L445.1,59.8 L466.5,59.8 L466.5,386.4 L445.1,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_2" ><title>Groonga</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(316.2,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Groonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '282.3,22.5 307.9,22.5 307.9,13.5 282.3,13.5 '/> + </g> + <path stroke='black' d='M282.3,22.5 L307.9,22.5 L307.9,13.5 L282.3,13.5 L282.3,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '182.8,386.4 204.4,386.4 204.4,384.8 182.8,384.8 '/> + </g> + <path stroke='black' d='M182.8,386.4 L182.8,384.9 L204.3,384.9 L204.3,386.4 L182.8,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '278.2,386.4 299.7,386.4 299.7,381.5 278.2,381.5 '/> + </g> + <path stroke='black' d='M278.2,386.4 L278.2,381.6 L299.6,381.6 L299.6,386.4 L278.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '373.6,386.4 395.1,386.4 395.1,385.5 373.6,385.5 '/> + </g> + <path stroke='black' d='M373.6,386.4 L373.6,385.6 L395.0,385.6 L395.0,386.4 L373.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '468.9,386.4 490.5,386.4 490.5,375.0 468.9,375.0 '/> + </g> + <path stroke='black' d='M468.9,386.4 L468.9,375.1 L490.4,375.1 L490.4,386.4 L468.9,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_3" ><title>textsearch</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(441.4,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >textsearch</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '407.5,22.5 433.1,22.5 433.1,13.5 407.5,13.5 '/> + </g> + <path stroke='black' d='M407.5,22.5 L433.1,22.5 L433.1,13.5 L407.5,13.5 L407.5,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '206.7,386.4 228.2,386.4 228.2,135.1 206.7,135.1 '/> + </g> + <path stroke='black' d='M206.7,386.4 L206.7,135.2 L228.1,135.2 L228.1,386.4 L206.7,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '302.0,386.4 323.6,386.4 323.6,235.1 302.0,235.1 '/> + </g> + <path stroke='black' d='M302.0,386.4 L302.0,235.2 L323.5,235.2 L323.5,386.4 L302.0,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '397.4,386.4 418.9,386.4 418.9,385.5 397.4,385.5 '/> + </g> + <path stroke='black' d='M397.4,386.4 L397.4,385.6 L418.8,385.6 L418.8,386.4 L397.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '492.8,386.4 514.3,386.4 514.3,84.8 492.8,84.8 '/> + </g> + <path stroke='black' d='M492.8,386.4 L492.8,84.9 L514.2,84.9 L514.2,386.4 L492.8,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> +<g fill="none" color="white" stroke="rgb( 52, 101, 164)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> + Added: images/blog/en/2016-11-30-pgroonga-1.1.9/en-search.svg (+342 -0) 100644 =================================================================== --- /dev/null +++ images/blog/en/2016-11-30-pgroonga-1.1.9/en-search.svg 2016-12-01 12:20:20 +0900 (a5eae59) @@ -0,0 +1,342 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.0 patchlevel 5 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,386.4 L575.0,386.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,386.4 M575.0,386.4 '/> <g transform="translate(106.5,390.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,351.2 L575.0,351.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,351.2 M575.0,351.2 '/> <g transform="translate(106.5,355.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 10000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,316.1 L575.0,316.1 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,316.1 M575.0,316.1 '/> <g transform="translate(106.5,320.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 20000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,280.9 L575.0,280.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,280.9 M575.0,280.9 '/> <g transform="translate(106.5,284.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 30000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,245.7 L575.0,245.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,245.7 M575.0,245.7 '/> <g transform="translate(106.5,249.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 40000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,210.5 L575.0,210.5 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,210.5 M575.0,210.5 '/> <g transform="translate(106.5,214.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 50000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,175.4 L575.0,175.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,175.4 M575.0,175.4 '/> <g transform="translate(106.5,179.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 60000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,140.2 L575.0,140.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,140.2 M575.0,140.2 '/> <g transform="translate(106.5,144.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 70000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,105.0 L575.0,105.0 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,105.0 M575.0,105.0 '/> <g transform="translate(106.5,108.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 80000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,69.9 L575.0,69.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,69.9 M575.0,69.9 '/> <g transform="translate(106.5,73.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 90000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M114.8,34.7 L575.0,34.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M114.8,34.7 M575.0,34.7 '/> <g transform="translate(106.5,38.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 100000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M206.8,386.4 M206.8,34.7 '/> <g transform="translate(206.8,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >animation</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M298.9,386.4 M298.9,34.7 '/> <g transform="translate(298.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >database</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M390.9,386.4 M390.9,34.7 '/> <g transform="translate(390.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >PostgreSQL</tspan></text> + </g> + <g transform="translate(390.9,426.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >OR</tspan></text> + </g> + <g transform="translate(390.9,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >MySQL</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M483.0,386.4 M483.0,34.7 '/> <g transform="translate(483.0,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >America</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(17.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Elapsed time (ms)</tspan></text> + </g> + <g transform="translate(35.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >(Shorter is better)</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(344.9,435.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(344.9,453.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(344.9,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Query</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + <g id="gnuplot_plot_1" ><title>PGroonga</title> +<g fill="none" color="white" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(136.7,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >PGroonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '102.8,22.5 128.4,22.5 128.4,13.5 102.8,13.5 '/> + </g> + <path stroke='black' d='M102.8,22.5 L128.4,22.5 L128.4,13.5 L102.8,13.5 L102.8,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '170.9,386.4 187.6,386.4 187.6,385.7 170.9,385.7 '/> + </g> + <path stroke='black' d='M170.9,386.4 L170.9,385.8 L187.5,385.8 L187.5,386.4 L170.9,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '263.0,386.4 279.7,386.4 279.7,383.8 263.0,383.8 '/> + </g> + <path stroke='black' d='M263.0,386.4 L263.0,383.9 L279.6,383.9 L279.6,386.4 L263.0,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '355.0,386.4 371.7,386.4 371.7,386.3 355.0,386.3 '/> + </g> + <path stroke='black' d='M355.0,386.4 L371.6,386.4 L355.0,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '447.1,386.4 463.7,386.4 463.7,381.7 447.1,381.7 '/> + </g> + <path stroke='black' d='M447.1,386.4 L447.1,381.8 L463.6,381.8 L463.6,386.4 L447.1,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_2" ><title>Groonga</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(261.9,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Groonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '228.0,22.5 253.6,22.5 253.6,13.5 228.0,13.5 '/> + </g> + <path stroke='black' d='M228.0,22.5 L253.6,22.5 L253.6,13.5 L228.0,13.5 L228.0,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '189.4,386.4 206.0,386.4 206.0,386.3 189.4,386.3 '/> + </g> + <path stroke='black' d='M189.4,386.4 L205.9,386.4 L189.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '281.4,386.4 298.1,386.4 298.1,386.2 281.4,386.2 '/> + </g> + <path stroke='black' d='M281.4,386.4 L281.4,386.3 L298.0,386.3 L298.0,386.4 L281.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '373.4,386.4 390.1,386.4 390.1,386.3 373.4,386.3 '/> + </g> + <path stroke='black' d='M373.4,386.4 L390.0,386.4 L373.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '465.5,386.4 482.1,386.4 482.1,386.1 465.5,386.1 '/> + </g> + <path stroke='black' d='M465.5,386.4 L465.5,386.2 L482.0,386.2 L482.0,386.4 L465.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_3" ><title>textsearch</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(387.1,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >textsearch</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '353.2,22.5 378.8,22.5 378.8,13.5 353.2,13.5 '/> + </g> + <path stroke='black' d='M353.2,22.5 L378.8,22.5 L378.8,13.5 L353.2,13.5 L353.2,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '207.8,386.4 224.4,386.4 224.4,382.8 207.8,382.8 '/> + </g> + <path stroke='black' d='M207.8,386.4 L207.8,382.9 L224.3,382.9 L224.3,386.4 L207.8,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '299.8,386.4 316.5,386.4 316.5,384.2 299.8,384.2 '/> + </g> + <path stroke='black' d='M299.8,386.4 L299.8,384.3 L316.4,384.3 L316.4,386.4 L299.8,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '391.8,386.4 408.5,386.4 408.5,386.3 391.8,386.3 '/> + </g> + <path stroke='black' d='M391.8,386.4 L408.4,386.4 L391.8,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '483.9,386.4 500.5,386.4 500.5,382.1 483.9,382.1 '/> + </g> + <path stroke='black' d='M483.9,386.4 L483.9,382.2 L500.4,382.2 L500.4,386.4 L483.9,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_4" ><title>pg_trgm</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(512.3,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >pg_trgm</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '478.4,22.5 504.0,22.5 504.0,13.5 478.4,13.5 '/> + </g> + <path stroke='black' d='M478.4,22.5 L504.0,22.5 L504.0,13.5 L478.4,13.5 L478.4,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '226.2,386.4 242.8,386.4 242.8,231.6 226.2,231.6 '/> + </g> + <path stroke='black' d='M226.2,386.4 L226.2,231.7 L242.7,231.7 L242.7,386.4 L226.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '318.2,386.4 334.9,386.4 334.9,270.2 318.2,270.2 '/> + </g> + <path stroke='black' d='M318.2,386.4 L318.2,270.3 L334.8,270.3 L334.8,386.4 L318.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '410.2,386.4 426.9,386.4 426.9,385.5 410.2,385.5 '/> + </g> + <path stroke='black' d='M410.2,386.4 L410.2,385.6 L426.8,385.6 L426.8,386.4 L410.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 78, 154, 6)' points = '502.3,386.4 519.0,386.4 519.0,62.7 502.3,62.7 '/> + </g> + <path stroke='black' d='M502.3,386.4 L502.3,62.8 L518.9,62.8 L518.9,386.4 L502.3,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> +<g fill="none" color="white" stroke="rgb( 78, 154, 6)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> + Added: images/blog/en/2016-11-30-pgroonga-1.1.9/ja-index-creation.svg (+197 -0) 100644 =================================================================== --- /dev/null +++ images/blog/en/2016-11-30-pgroonga-1.1.9/ja-index-creation.svg 2016-12-01 12:20:20 +0900 (54631dd) @@ -0,0 +1,197 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.0 patchlevel 5 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M81.6,449.4 L575.0,449.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M81.6,449.4 M575.0,449.4 '/> <g transform="translate(73.3,453.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M81.6,395.5 L575.0,395.5 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M81.6,395.5 M575.0,395.5 '/> <g transform="translate(73.3,399.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 5</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M81.6,341.6 L575.0,341.6 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M81.6,341.6 M575.0,341.6 '/> <g transform="translate(73.3,345.5)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 10</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M81.6,287.7 L575.0,287.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M81.6,287.7 M575.0,287.7 '/> <g transform="translate(73.3,291.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 15</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M81.6,233.8 L575.0,233.8 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M81.6,233.8 M575.0,233.8 '/> <g transform="translate(73.3,237.7)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 20</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M81.6,179.9 L575.0,179.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M81.6,179.9 M575.0,179.9 '/> <g transform="translate(73.3,183.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 25</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M81.6,126.0 L575.0,126.0 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M81.6,126.0 M575.0,126.0 '/> <g transform="translate(73.3,129.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 30</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M81.6,72.1 L575.0,72.1 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M81.6,72.1 M575.0,72.1 '/> <g transform="translate(73.3,76.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 35</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(420.8,138.5)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Data: Japanese Wikipedia</tspan></text> + </g> + <g transform="translate(420.8,156.5)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Size: About 5.9GiB</tspan></text> + </g> + <g transform="translate(420.8,174.5)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Max text size: 677KiB</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(17.0,260.8) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Elapsed time (minute)</tspan></text> + </g> + <g transform="translate(35.0,260.8) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >(Shorter is better)</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(328.3,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Module</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(328.3,49.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Index creation</tspan></text> + </g> +</g> + <g id="gnuplot_plot_1" ><title>PGroonga</title> +<g fill="none" color="white" stroke="black" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(261.9,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >PGroonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '228.0,22.5 253.6,22.5 253.6,13.5 228.0,13.5 '/> + </g> + <path stroke='black' d='M228.0,22.5 L253.6,22.5 L253.6,13.5 L228.0,13.5 L228.0,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '250.2,449.4 324.3,449.4 324.3,244.5 250.2,244.5 '/> + </g> + <path stroke='black' d='M250.2,449.4 L250.2,244.6 L324.2,244.6 L324.2,449.4 L250.2,449.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_2" ><title>pg_bigm</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(370.5,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >pg_bigm</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '336.6,22.5 362.2,22.5 362.2,13.5 336.6,13.5 '/> + </g> + <path stroke='black' d='M336.6,22.5 L362.2,22.5 L362.2,13.5 L336.6,13.5 L336.6,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '332.4,449.4 406.5,449.4 406.5,93.6 332.4,93.6 '/> + </g> + <path stroke='black' d='M332.4,449.4 L332.4,93.7 L406.4,93.7 L406.4,449.4 L332.4,449.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> +<g fill="none" color="white" stroke="rgb( 52, 101, 164)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> + Added: images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search-without-groonga.svg (+238 -0) 100644 =================================================================== --- /dev/null +++ images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search-without-groonga.svg 2016-12-01 12:20:20 +0900 (555a497) @@ -0,0 +1,238 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.0 patchlevel 5 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,386.4 L575.0,386.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,386.4 M575.0,386.4 '/> <g transform="translate(89.9,390.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,327.8 L575.0,327.8 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,327.8 M575.0,327.8 '/> <g transform="translate(89.9,331.7)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 500</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,269.2 L575.0,269.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,269.2 M575.0,269.2 '/> <g transform="translate(89.9,273.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,210.5 L575.0,210.5 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,210.5 M575.0,210.5 '/> <g transform="translate(89.9,214.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1500</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,151.9 L575.0,151.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,151.9 M575.0,151.9 '/> <g transform="translate(89.9,155.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 2000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,93.3 L575.0,93.3 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,93.3 M575.0,93.3 '/> <g transform="translate(89.9,97.2)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 2500</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,34.7 L575.0,34.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,34.7 M575.0,34.7 '/> <g transform="translate(89.9,38.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 3000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M193.6,386.4 M193.6,34.7 '/> <g transform="translate(193.6,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >テレビアニメ</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M288.9,386.4 M288.9,34.7 '/> <g transform="translate(288.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >データベース</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M384.3,386.4 M384.3,34.7 '/> <g transform="translate(384.3,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >PostgreSQL</tspan></text> + </g> + <g transform="translate(384.3,426.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >OR</tspan></text> + </g> + <g transform="translate(384.3,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >MySQL</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M479.6,386.4 M479.6,34.7 '/> <g transform="translate(479.6,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >日本</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(17.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Elapsed time (ms)</tspan></text> + </g> + <g transform="translate(35.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >(Shorter is better)</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(336.6,435.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(336.6,453.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(336.6,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Query</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + <g id="gnuplot_plot_1" ><title>PGroonga</title> +<g fill="none" color="white" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(270.2,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >PGroonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '236.3,22.5 261.9,22.5 261.9,13.5 236.3,13.5 '/> + </g> + <path stroke='black' d='M236.3,22.5 L261.9,22.5 L261.9,13.5 L236.3,13.5 L236.3,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '163.4,386.4 192.1,386.4 192.1,378.7 163.4,378.7 '/> + </g> + <path stroke='black' d='M163.4,386.4 L163.4,378.8 L192.0,378.8 L192.0,386.4 L163.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '258.7,386.4 287.4,386.4 287.4,380.6 258.7,380.6 '/> + </g> + <path stroke='black' d='M258.7,386.4 L258.7,380.7 L287.3,380.7 L287.3,386.4 L258.7,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '354.1,386.4 382.8,386.4 382.8,386.1 354.1,386.1 '/> + </g> + <path stroke='black' d='M354.1,386.4 L354.1,386.2 L382.7,386.2 L382.7,386.4 L354.1,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '449.4,386.4 478.2,386.4 478.2,320.3 449.4,320.3 '/> + </g> + <path stroke='black' d='M449.4,386.4 L449.4,320.4 L478.1,320.4 L478.1,386.4 L449.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_2" ><title>pg_bigm</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(378.8,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >pg_bigm</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '344.9,22.5 370.5,22.5 370.5,13.5 344.9,13.5 '/> + </g> + <path stroke='black' d='M344.9,22.5 L370.5,22.5 L370.5,13.5 L344.9,13.5 L344.9,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '195.1,386.4 223.9,386.4 223.9,58.0 195.1,58.0 '/> + </g> + <path stroke='black' d='M195.1,386.4 L195.1,58.1 L223.8,58.1 L223.8,386.4 L195.1,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '290.5,386.4 319.2,386.4 319.2,233.9 290.5,233.9 '/> + </g> + <path stroke='black' d='M290.5,386.4 L290.5,234.0 L319.1,234.0 L319.1,386.4 L290.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '385.9,386.4 414.6,386.4 414.6,380.6 385.9,380.6 '/> + </g> + <path stroke='black' d='M385.9,386.4 L385.9,380.7 L414.5,380.7 L414.5,386.4 L385.9,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '481.2,386.4 509.9,386.4 509.9,330.1 481.2,330.1 '/> + </g> + <path stroke='black' d='M481.2,386.4 L481.2,330.2 L509.8,330.2 L509.8,386.4 L481.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> +<g fill="none" color="white" stroke="rgb( 52, 101, 164)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> + Added: images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search-without-pg-bigm.svg (+238 -0) 100644 =================================================================== --- /dev/null +++ images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search-without-pg-bigm.svg 2016-12-01 12:20:20 +0900 (baa7b66) @@ -0,0 +1,238 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.0 patchlevel 5 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,386.4 L575.0,386.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,386.4 M575.0,386.4 '/> <g transform="translate(81.6,390.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,327.8 L575.0,327.8 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,327.8 M575.0,327.8 '/> <g transform="translate(81.6,331.7)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 100</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,269.2 L575.0,269.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,269.2 M575.0,269.2 '/> <g transform="translate(81.6,273.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 200</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,210.5 L575.0,210.5 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,210.5 M575.0,210.5 '/> <g transform="translate(81.6,214.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 300</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,151.9 L575.0,151.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,151.9 M575.0,151.9 '/> <g transform="translate(81.6,155.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 400</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,93.3 L575.0,93.3 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,93.3 M575.0,93.3 '/> <g transform="translate(81.6,97.2)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 500</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M89.9,34.7 L575.0,34.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.9,34.7 M575.0,34.7 '/> <g transform="translate(81.6,38.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 600</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M186.9,386.4 M186.9,34.7 '/> <g transform="translate(186.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >テレビアニメ</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M283.9,386.4 M283.9,34.7 '/> <g transform="translate(283.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >データベース</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M381.0,386.4 M381.0,34.7 '/> <g transform="translate(381.0,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >PostgreSQL</tspan></text> + </g> + <g transform="translate(381.0,426.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >OR</tspan></text> + </g> + <g transform="translate(381.0,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >MySQL</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M478.0,386.4 M478.0,34.7 '/> <g transform="translate(478.0,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >日本</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(17.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Elapsed time (ms)</tspan></text> + </g> + <g transform="translate(35.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >(Shorter is better)</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(332.4,435.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(332.4,453.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(332.4,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Query</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + <g id="gnuplot_plot_1" ><title>PGroonga</title> +<g fill="none" color="white" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(266.0,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >PGroonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '232.1,22.5 257.7,22.5 257.7,13.5 232.1,13.5 '/> + </g> + <path stroke='black' d='M232.1,22.5 L257.7,22.5 L257.7,13.5 L232.1,13.5 L232.1,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '156.2,386.4 185.4,386.4 185.4,348.2 156.2,348.2 '/> + </g> + <path stroke='black' d='M156.2,386.4 L156.2,348.3 L185.3,348.3 L185.3,386.4 L156.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '253.2,386.4 282.4,386.4 282.4,357.6 253.2,357.6 '/> + </g> + <path stroke='black' d='M253.2,386.4 L253.2,357.7 L282.3,357.7 L282.3,386.4 L253.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '350.2,386.4 379.4,386.4 379.4,385.1 350.2,385.1 '/> + </g> + <path stroke='black' d='M350.2,386.4 L350.2,385.2 L379.3,385.2 L379.3,386.4 L350.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '447.3,386.4 476.5,386.4 476.5,56.3 447.3,56.3 '/> + </g> + <path stroke='black' d='M447.3,386.4 L447.3,56.4 L476.4,56.4 L476.4,386.4 L447.3,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_2" ><title>Groonga</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(374.6,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Groonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '340.7,22.5 366.3,22.5 366.3,13.5 340.7,13.5 '/> + </g> + <path stroke='black' d='M340.7,22.5 L366.3,22.5 L366.3,13.5 L340.7,13.5 L340.7,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '188.5,386.4 217.7,386.4 217.7,364.0 188.5,364.0 '/> + </g> + <path stroke='black' d='M188.5,386.4 L188.5,364.1 L217.6,364.1 L217.6,386.4 L188.5,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '285.6,386.4 314.8,386.4 314.8,368.1 285.6,368.1 '/> + </g> + <path stroke='black' d='M285.6,386.4 L285.6,368.2 L314.7,368.2 L314.7,386.4 L285.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '382.6,386.4 411.8,386.4 411.8,385.7 382.6,385.7 '/> + </g> + <path stroke='black' d='M382.6,386.4 L382.6,385.8 L411.7,385.8 L411.7,386.4 L382.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '479.6,386.4 508.8,386.4 508.8,351.7 479.6,351.7 '/> + </g> + <path stroke='black' d='M479.6,386.4 L479.6,351.8 L508.7,351.8 L508.7,386.4 L479.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> +<g fill="none" color="white" stroke="rgb(237, 212, 0)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> + Added: images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search.svg (+272 -0) 100644 =================================================================== --- /dev/null +++ images/blog/en/2016-11-30-pgroonga-1.1.9/ja-search.svg 2016-12-01 12:20:20 +0900 (a060d4e) @@ -0,0 +1,272 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.0 patchlevel 5 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,386.4 L575.0,386.4 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,386.4 M575.0,386.4 '/> <g transform="translate(89.9,390.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,327.8 L575.0,327.8 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,327.8 M575.0,327.8 '/> <g transform="translate(89.9,331.7)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 500</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,269.2 L575.0,269.2 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,269.2 M575.0,269.2 '/> <g transform="translate(89.9,273.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,210.5 L575.0,210.5 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,210.5 M575.0,210.5 '/> <g transform="translate(89.9,214.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 1500</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,151.9 L575.0,151.9 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,151.9 M575.0,151.9 '/> <g transform="translate(89.9,155.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 2000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,93.3 L575.0,93.3 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,93.3 M575.0,93.3 '/> <g transform="translate(89.9,97.2)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 2500</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' class="gridline" d='M98.2,34.7 L575.0,34.7 '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M98.2,34.7 M575.0,34.7 '/> <g transform="translate(89.9,38.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 3000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M193.6,386.4 M193.6,34.7 '/> <g transform="translate(193.6,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >テレビアニメ</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M288.9,386.4 M288.9,34.7 '/> <g transform="translate(288.9,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >データベース</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M384.3,386.4 M384.3,34.7 '/> <g transform="translate(384.3,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >PostgreSQL</tspan></text> + </g> + <g transform="translate(384.3,426.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >OR</tspan></text> + </g> + <g transform="translate(384.3,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >MySQL</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M479.6,386.4 M479.6,34.7 '/> <g transform="translate(479.6,408.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >日本</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(17.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Elapsed time (ms)</tspan></text> + </g> + <g transform="translate(35.0,210.6) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >(Shorter is better)</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(336.6,435.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(336.6,453.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text></text> + </g> + <g transform="translate(336.6,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Query</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + <g id="gnuplot_plot_1" ><title>PGroonga</title> +<g fill="none" color="white" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(215.9,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >PGroonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '182.0,22.5 207.6,22.5 207.6,13.5 182.0,13.5 '/> + </g> + <path stroke='black' d='M182.0,22.5 L207.6,22.5 L207.6,13.5 L182.0,13.5 L182.0,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '159.0,386.4 180.5,386.4 180.5,378.7 159.0,378.7 '/> + </g> + <path stroke='black' d='M159.0,386.4 L159.0,378.8 L180.4,378.8 L180.4,386.4 L159.0,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '254.4,386.4 275.9,386.4 275.9,380.6 254.4,380.6 '/> + </g> + <path stroke='black' d='M254.4,386.4 L254.4,380.7 L275.8,380.7 L275.8,386.4 L254.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '349.7,386.4 371.3,386.4 371.3,386.1 349.7,386.1 '/> + </g> + <path stroke='black' d='M349.7,386.4 L349.7,386.2 L371.2,386.2 L371.2,386.4 L349.7,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(173, 127, 168)' points = '445.1,386.4 466.6,386.4 466.6,320.3 445.1,320.3 '/> + </g> + <path stroke='black' d='M445.1,386.4 L445.1,320.4 L466.5,320.4 L466.5,386.4 L445.1,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_2" ><title>Groonga</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(324.5,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >Groonga</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '290.6,22.5 316.2,22.5 316.2,13.5 290.6,13.5 '/> + </g> + <path stroke='black' d='M290.6,22.5 L316.2,22.5 L316.2,13.5 L290.6,13.5 L290.6,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '182.8,386.4 204.4,386.4 204.4,381.8 182.8,381.8 '/> + </g> + <path stroke='black' d='M182.8,386.4 L182.8,381.9 L204.3,381.9 L204.3,386.4 L182.8,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '278.2,386.4 299.7,386.4 299.7,382.7 278.2,382.7 '/> + </g> + <path stroke='black' d='M278.2,386.4 L278.2,382.8 L299.6,382.8 L299.6,386.4 L278.2,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '373.6,386.4 395.1,386.4 395.1,386.2 373.6,386.2 '/> + </g> + <path stroke='black' d='M373.6,386.4 L373.6,386.3 L395.0,386.3 L395.0,386.4 L373.6,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb(237, 212, 0)' points = '468.9,386.4 490.5,386.4 490.5,379.4 468.9,379.4 '/> + </g> + <path stroke='black' d='M468.9,386.4 L468.9,379.5 L490.4,379.5 L490.4,386.4 L468.9,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> + <g id="gnuplot_plot_3" ><title>pg_bigm</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(433.1,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start"> + <text><tspan font-family="Arial" >pg_bigm</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '399.2,22.5 424.8,22.5 424.8,13.5 399.2,13.5 '/> + </g> + <path stroke='black' d='M399.2,22.5 L424.8,22.5 L424.8,13.5 L399.2,13.5 L399.2,22.5 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '206.7,386.4 228.2,386.4 228.2,58.0 206.7,58.0 '/> + </g> + <path stroke='black' d='M206.7,386.4 L206.7,58.1 L228.1,58.1 L228.1,386.4 L206.7,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '302.0,386.4 323.6,386.4 323.6,233.9 302.0,233.9 '/> + </g> + <path stroke='black' d='M302.0,386.4 L302.0,234.0 L323.5,234.0 L323.5,386.4 L302.0,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '397.4,386.4 418.9,386.4 418.9,380.6 397.4,380.6 '/> + </g> + <path stroke='black' d='M397.4,386.4 L397.4,380.7 L418.8,380.7 L418.8,386.4 L397.4,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> + <g stroke='none' shape-rendering='crispEdges'> + <polygon fill = 'rgb( 52, 101, 164)' points = '492.8,386.4 514.3,386.4 514.3,330.1 492.8,330.1 '/> + </g> + <path stroke='black' d='M492.8,386.4 L492.8,330.2 L514.2,330.2 L514.2,386.4 L492.8,386.4 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + </g> +<g fill="none" color="white" stroke="rgb( 52, 101, 164)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> + Added: ja/_posts/2016-11-30-pgroonga-1.1.9.md (+112 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2016-11-30-pgroonga-1.1.9.md 2016-12-01 12:20:20 +0900 (00af121) @@ -0,0 +1,112 @@ +--- +layout: post.ja +title: PostgreSQL用高速日本語全文検索モジュールPGroonga(ぴーじーるんが) 1.1.9リリース +description: PostgreSQL用高速日本語全文検索モジュールPGroonga(ぴーじーるんが) 1.1.9をリリースしました! +--- + +## PostgreSQL用高速日本語全文検索モジュールPGroonga(ぴーじーるんが) 1.1.9リリース + +PostgreSQLで高速日本語全文検索をできるようにする[PGroonga](https://pgroonga.github.io/ja/)の1.1.9をリリースしました! + +新規ユーザーの方は、PGroonga 1.0.0のリリースアナウンスの[PGroongaについて](/ja/blog/2015/10/29/pgroonga-1.0.0.html#pgroonga)も参照してください。 + +## ベンチマーク + +公式サイトにWikipediaのデータを使ったベンチマークを追加しました。 + +比較対象は以下の3つのモジュールです。 + + * PostgreSQL組み込みのtextsearch + * contribにあるpg\_trgm + * サードパーティーの拡張モジュールpg\_bigm + +textsearchとpg\_trgmは日本語をサポートしていないので英語版のWikipediaのデータを使っています。 + +pg\_bigmは日本語をサポートしているで日本語版のWikipediaのデータを使っています。 + +### PGroongaとtextsearchとpg\_trgm + +PGroongaとtextsearchとpg\_trgmのベンチマーク結果の概要を説明します。より詳細な内容は[PGroonga対textsearch対pg\_trgm](https://pgroonga.github.io/ja/reference/pgroonga-versus-textsearch-and-pg-trgm.html)を参照してください。 + +まず検索時間です。 + +次のようにpg\_trgmがPGroongaとtextsearchと比べて圧倒的に遅かったです。(棒の長さは検索時間(ms)を表しているので短い方が高速です。) + + + +pg\_trgmを抜くと次のようになります。PGroongaとtextsearchがほぼ同じくらいの速さということがわかります。なお、「Groonga」というのは[`pgroonga.command`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-command.html)を使ってGroongaを直接使って検索したケースです。PGroonga・textsearchと比べて10倍以上高速です。 + + + +次にインデックス作成時間です。 + +次のようにPGroongaが一番高速です。textsearchより2倍ほど速く、pg\_trgmより30%ほど速いです。 + + + +### PGroongaとpg\_bigm + +PGroongaとpg\_bigmのベンチマーク結果の概要を説明します。より詳細な内容は[PGroonga対pg\_bigm](https://pgroonga.github.io/ja/reference/pgroonga-versus-pg-bigm.html)を参照してください。 + +まず検索時間です。 + +次のように検索語が3文字以上のときはpg\_bigmはPGroongaと比べて圧倒的に遅かったです。(棒の長さは検索時間(ms)を表しているので短い方が高速です。) + + + +次にインデックス作成時間です。 + +次のようにPGroongaがpg\_bigmより75%ほど速いです。 + + + +## 変更点 + +[1.1.3](/ja/blog/2016/9/29/pgroonga-1.1.3.html)からの変更点は次の通りです。`UPDATE`/`DELETE`をすると検索漏れが発生する可能性がある問題を修正しているためアップグレードをオススメします。ストリーミングレプリケーション対応やZstandardによる圧縮のサポートなど多くの改良もあるため、その観点でもアップグレードをオススメします。それぞれの項目の詳細はリンク先を確認してください。 + + * [実験的] WALをサポートしました。クラッシュセーフではありませんが、[レプリケーション](https://pgroonga.github.io/ja/reference/replication.html)ができるようになりました。PostgreSQL 9.6以降とMessagePackが必要です。 + * [[Windows](https://pgroonga.github.io/ja/install/windows.html)] バンドルしているGroongaのバージョンを6.1.1にしました。 + * [[Windows](https://pgroonga.github.io/ja/install/windows.html)] PostgreSQL 9.5.5用のパッケージと9.6.1用のパッケージを両方提供するようにしました。 + * インデックス対象のテーブルに対して`UPDATE`あるいは`DELETE`をした後、検索できないレコードがでることがある問題を修正しました。(yongxianggao-chanjetさんが報告) + * [`pgroonga.score`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-score.html)のメモリーリークを修正しました。(高橋さんが報告) + * デフォルトテーブルスペース以外のテーブルスペースにPGroongaのインデックスを作成すると`VACUUM`時に削除される問題を修正しました。(yongxianggao-chanjetさんが報告) + * テーブルスペースをサポートしました。 + * サイズの大きなレコードがある場合はインデックスオンリースキャンを無効にするようにしました。 + * [[Ubuntu](https://pgroonga.github.io/ja/install/ubuntu.html)] Wily Werewolf(15.10)のサポートをやめました。 + * [[Ubuntu](https://pgroonga.github.io/ja/install/ubuntu.html)] Yakkety Yak(16.10)のサポートを始めました。 + * Zstandardを使ったテキストデータの圧縮をサポートしました。 + * zlibを使ったテキストデータの圧縮をサポートしました。 + * 起動時にログにPGroongaのバージョンを出力するようにしました。 + * [`pgroonga_tuple_is_alive` Groonga関数](https://pgroonga.github.io/ja/reference/groonga-functions/pgroonga-tuple-is-alive.html)を追加しました。[`groonga.command`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-command.html)と一緒に使うとPostgreSQLレベルで無効なレコードを除去できます。 + * `CREATE INDEX`時のメモリー使用量を減らしました。 + * クラッシュ時にバックトレースをログに残すようにしました。(Windowsでは動きません。) + * ログにPIDを出力するようにしました。 + * 定数を引数として以下の関数を実行したときに最適化されるようにしました。 + * [`pgroonga.table_name`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-table-name.html) + * [`pgroonga.snippet_html`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-snippet-html.html) + * [`pgroonga.highlight_html`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-highlight-html.html) + * [`pgroonga.match_positions_byte`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-match-positions-byte.html) + * [`pgroonga.match_positions_character`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-match-positions-character.html) + * [`pgroonga.query_extract_keywords`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-query-extract-keywords.html) + * [`pgroonga.escape`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-escape.html)を追加しました。スクリプト構文の値をエスケープする関数です。 + * [`pgroonga.query_escape`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-query-escape.html)を追加しました。クエリー構文の値をエスケープする関数です。 + * [`pgroonga.command_escape_escape`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-query-escape.html)を追加しました。Groongaコマンドの引数の値をエスケープする関数です。 + * [`pgroonga.table_name`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-table-name.html)の戻り値の型を`cstring`から`text`に変更しました。 + * [`pgroonga.command`関数](https://pgroonga.github.io/ja/reference/functions/pgroonga-command.html)でコマンドの引数を配列で指定できるようにしました。引数の値を自動的にエスケープするためセキュリティー向上につながります。そのためこの使い方を推奨します。 + * クエリーログを出力できるようにしました。[`pgroonga.query_log_path`パラメーター](https://pgroonga.github.io/ja/reference/parameters/query-log-path.html)で出力の場所、出力するかどうかを制御できます。 + +## アップグレード方法 + +1.1.3以降のすべてのバージョンと互換性があります。[アップグレード](https://pgroonga.github.io/ja/upgrade/)の「互換性がある場合」用の手順でアップグレードしてください。 + +## おしらせ + +PGConf.ASIA 2016 DAY 2(2016年12月3日(土))の14:00から[PGroongaのセッション](http://www.pgconf.asia/JP/day-2/#A4)があります。PGroongaと他のモジュールの比較だけでなく、PostgreSQL 9.6から追加されたgeneric WAL APIを用いたレプリケーションの実現方法なども解説する予定です。セッションで使うスライドは以下で公開しています。PGroongaに興味のある方はぜひお越しください。 + + * [PGroonga - Make PostgreSQL fast full text search platform for all languages!](https://slide.rabbit-shocker.org/authors/kou/pgconf-asia-2016/) + +## まとめ + +PGroongaの新しいリリースを紹介しました。レプリケーションにも対応してどんどん使いやすくなっています。 + +PostgreSQLで高速に日本語全文検索をしたいという方はPGroongaを使ってガンガン検索してください!