<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>8.3.26. table_create — groonga v3.0.2 documentation</title> <link rel="stylesheet" href="../../_static/groonga.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../../', VERSION: '3.0.2', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/underscore.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script> <link rel="shortcut icon" href="../../_static/favicon.ico"/> <link rel="top" title="groonga v3.0.2 documentation" href="../../index.html" /> <link rel="up" title="8.3. Command" href="../command.html" /> <link rel="next" title="8.3.27. table_list" href="table_list.html" /> <link rel="prev" title="8.3.25. suggest" href="suggest.html" /> </head> <body> <div class="header"> <h1 class="title"> <a id="top-link" href="../../index.html"> <span class="project">groonga</span> <span class="separator">-</span> <span class="description">An open-source fulltext search engine and column store.</span> </a> </h1> <div class="other-language-links"> <ul> <li><a href="../../../../ja/html/reference/commands/table_create.html"><img src="../../_static/jp.png" alt="日本語">日本語版はこちら</a></li> </ul> </div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="table_list.html" title="8.3.27. table_list" accesskey="N">next</a> |</li> <li class="right" > <a href="suggest.html" title="8.3.25. suggest" accesskey="P">previous</a> |</li> <li><a href="../../index.html">groonga v3.0.2 documentation</a> »</li> <li><a href="../../reference.html" >8. リファレンスマニュアル</a> »</li> <li><a href="../command.html" accesskey="U">8.3. Command</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="table-create"> <h1>8.3.26. <tt class="docutils literal"><span class="pre">table_create</span></tt><a class="headerlink" href="#table-create" title="Permalink to this headline">¶</a></h1> <div class="section" id="summary"> <h2>8.3.26.1. Summary<a class="headerlink" href="#summary" title="Permalink to this headline">¶</a></h2> <p><tt class="docutils literal"><span class="pre">table_create</span></tt> creates a new table in the current database. You need to create one or more tables to store and search data.</p> </div> <div class="section" id="syntax"> <h2>8.3.26.2. Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> <p><tt class="docutils literal"><span class="pre">table_create</span></tt> has many parameters. The required parameter is only <tt class="docutils literal"><span class="pre">name</span></tt> and otehrs are optional:</p> <div class="highlight-none"><div class="highlight"><pre>table_create name [flags=TABLE_HASH_KEY] [key_type=null] [value_type=null] [default_tokenizer=null] [normalizer=null] </pre></div> </div> </div> <div class="section" id="usage"> <h2>8.3.26.3. Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2> <p><tt class="docutils literal"><span class="pre">table_create</span></tt> command creates a new persistent table. See <a class="reference internal" href="../tables.html"><em>Tables</em></a> for table details.</p> <div class="section" id="create-data-store-table"> <h3>8.3.26.3.1. Create data store table<a class="headerlink" href="#create-data-store-table" title="Permalink to this headline">¶</a></h3> <p>You can use all table types for data store table. See <a class="reference internal" href="../tables.html"><em>Tables</em></a> for all table types.</p> <p>Table type is specified as <tt class="docutils literal"><span class="pre">TABLE_${TYPE}</span></tt> to <tt class="docutils literal"><span class="pre">flags</span></tt> parameter.</p> <p>Here is an example to create <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> table:</p> <p>Execution example:</p> <div class="highlight-none"><div class="highlight"><pre>table_create Logs TABLE_NO_KEY # [[0, 1337566253.89858, 0.000355720520019531], true] </pre></div> </div> <p>The <tt class="docutils literal"><span class="pre">table_create</span></tt> command creates a table that is named <tt class="docutils literal"><span class="pre">Logs</span></tt> and is <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> type.</p> <p>If your records aren't searched by key, <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> type table is suitable. Because <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> doesn't support key but it is fast and small table. Storing logs into groonga database is the case.</p> <p>If your records are searched by key or referenced by one or more columns, <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> type isn't suitable. Lexicon for fulltext search is the case.</p> </div> <div class="section" id="create-lexicon-table"> <h3>8.3.26.3.2. Create lexicon table<a class="headerlink" href="#create-lexicon-table" title="Permalink to this headline">¶</a></h3> <p>You can use all table types except <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> for lexicon table. Lexicon table needs key support but <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> doesn't support key.</p> <p>Here is an example to create <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> table:</p> <p>Execution example:</p> <div class="highlight-none"><div class="highlight"><pre>table_create Lexicon TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --normalizer NormalizerAuto # [[0, 1337566253.89858, 0.000355720520019531], true] </pre></div> </div> <p>The <tt class="docutils literal"><span class="pre">table_create</span></tt> command creates the following table:</p> <ul class="simple"> <li>The table is named <tt class="docutils literal"><span class="pre">Lexicon</span></tt>.</li> <li>The table is <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> type table.</li> <li>The table's key is <tt class="docutils literal"><span class="pre">ShortText</span></tt> type.</li> <li>The table uses <tt class="docutils literal"><span class="pre">TokenBigram</span></tt> tokenizer to extract tokens from a normalized text.</li> <li>The table uses <tt class="docutils literal"><span class="pre">NormalizerAuto</span></tt> normalizer to normalize a text.</li> </ul> <p><tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> is suitable table type for lexicon table. Lexicon table is used for fulltext search.</p> <p>In fulltext search, predictive search may be used for fuzzy search. Predictive search is supported by <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> and <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt>.</p> <p>Lexicon table has many keys because a fulltext target text has many tokens. Table that has many keys should consider table size because large table requires large memory. Requiring large memory causes disk I/O. It blocks fast search. So table size is important for a table that has many keys. <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> is less table size than <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt>.</p> <p>Because of the above reasons, <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> is suitable table type for lexicon table.</p> </div> <div class="section" id="create-tag-index-table"> <h3>8.3.26.3.3. Create tag index table<a class="headerlink" href="#create-tag-index-table" title="Permalink to this headline">¶</a></h3> <p>You can use all table types except <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> for tag index table. Tag index table needs key support but <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> doesn't support key.</p> <p>Here is an example to create <tt class="docutils literal"><span class="pre">TABLE_HASH_KEY</span></tt> table:</p> <p>Execution example:</p> <div class="highlight-none"><div class="highlight"><pre>table_create Ages TABLE_DAT_KEY UInt32 # [[0, 1337566253.89858, 0.000355720520019531], true] </pre></div> </div> <p>The <tt class="docutils literal"><span class="pre">table_create</span></tt> command creates a table that is named <tt class="docutils literal"><span class="pre">Tags</span></tt>, is <tt class="docutils literal"><span class="pre">TABLE_HASH_KEY</span></tt> type and has <tt class="docutils literal"><span class="pre">ShortText</span></tt> type key.</p> <p><tt class="docutils literal"><span class="pre">TABLE_HASH_KEY</span></tt> or <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> are suitable table types for tag index table.</p> <p>If you need only exact match tag search feature, <tt class="docutils literal"><span class="pre">TABLE_HASH_KEY</span></tt> is suitable. It is the common case.</p> <p>If you also need predictive tag search feature (for example, searching <tt class="docutils literal"><span class="pre">"groonga"</span></tt> by <tt class="docutils literal"><span class="pre">"gr"</span></tt> keyword.), <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> is suitable. <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> is large table size but it is not important because the number of tags will not be large.</p> </div> <div class="section" id="create-range-index-table"> <h3>8.3.26.3.4. Create range index table<a class="headerlink" href="#create-range-index-table" title="Permalink to this headline">¶</a></h3> <p>You can use <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> and <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> table types for range index table. Range index table needs range search support but <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> and <tt class="docutils literal"><span class="pre">TABLE_HASH_KEY</span></tt> don't support it.</p> <p>Here is an example to create <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> table:</p> <p>Execution example:</p> <div class="highlight-none"><div class="highlight"><pre>table_create Ages TABLE_DAT_KEY UInt32 # [[0, 1337566253.89858, 0.000355720520019531], true] </pre></div> </div> <p>The <tt class="docutils literal"><span class="pre">table_create</span></tt> command creates a table that is named <tt class="docutils literal"><span class="pre">Ages</span></tt>, is <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> type and has <tt class="docutils literal"><span class="pre">UInt32</span></tt> type key.</p> <p><tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> and <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> are suitable table types for range index table.</p> <p>If you don't have many indexed items, <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> is suitable. Index for age is the case in the above example. Index for age will have only 0-100 items because human doesn't live so long.</p> <p>If you have many indexed items, <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> is suitable. Because <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> is smaller than <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt>.</p> </div> </div> <div class="section" id="parameters"> <h2>8.3.26.4. Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2> <p>This section describes all parameters.</p> <div class="section" id="name"> <h3>8.3.26.4.1. <tt class="docutils literal"><span class="pre">name</span></tt><a class="headerlink" href="#name" title="Permalink to this headline">¶</a></h3> <p>It specifies a table name to be created. <tt class="docutils literal"><span class="pre">name</span></tt> must be specified.</p> <p>Here are available characters:</p> <ul class="simple"> <li><tt class="docutils literal"><span class="pre">0</span></tt> .. <tt class="docutils literal"><span class="pre">9</span></tt> (digit)</li> <li><tt class="docutils literal"><span class="pre">a</span></tt> .. <tt class="docutils literal"><span class="pre">z</span></tt> (alphabet, lower case)</li> <li><tt class="docutils literal"><span class="pre">A</span></tt> .. <tt class="docutils literal"><span class="pre">Z</span></tt> (alphabet, upper case)</li> <li><tt class="docutils literal"><span class="pre">#</span></tt> (hash)</li> <li><tt class="docutils literal"><span class="pre">@</span></tt> (at mark)</li> <li><tt class="docutils literal"><span class="pre">-</span></tt> (hyphen)</li> <li><tt class="docutils literal"><span class="pre">_</span></tt> (underscore) (NOTE: Underscore can't be used as the first character.)</li> </ul> <p>You need to create a name with one or more the above chracters. Note that you cannot use <tt class="docutils literal"><span class="pre">_</span></tt> as the first charcter such as <tt class="docutils literal"><span class="pre">_name</span></tt>.</p> </div> <div class="section" id="flags"> <h3>8.3.26.4.2. <tt class="docutils literal"><span class="pre">flags</span></tt><a class="headerlink" href="#flags" title="Permalink to this headline">¶</a></h3> <p>It specifies a table type and table customize options.</p> <p>Here are available flags:</p> <table border="1" class="docutils"> <colgroup> <col width="40%" /> <col width="60%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>flags</td> <td>description</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt></td> <td>Array table.</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">TABLE_HASH_HEY</span></tt></td> <td>Hash table.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt></td> <td>Patricia trie.</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt></td> <td>Double Array trie.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">KEY_WITH_SIS</span></tt></td> <td>Enable Semi Infinite String. Require <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt>.</td> </tr> </tbody> </table> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Since groonga 2.1.0 <tt class="docutils literal"><span class="pre">KEY_NORMALIZE</span></tt> flag is deprecated. Use <tt class="docutils literal"><span class="pre">normalizer</span></tt> option with <tt class="docutils literal"><span class="pre">NormalizerAuto</span></tt> instead.</p> </div> <p>You must specify one of <tt class="docutils literal"><span class="pre">TABLE_${TYPE}</span></tt> flags. You cannot specify two or more <tt class="docutils literal"><span class="pre">TABLE_${TYPE}</span></tt> flags. For example, <tt class="docutils literal"><span class="pre">TABLE_NO_KEY|TABLE_HASH_KEY</span></tt> is invalid.</p> <p>You can combine flags with <tt class="docutils literal"><span class="pre">|</span></tt> (vertical bar) such as <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY|KEY_WITH_SIS</span></tt>.</p> <p>See <a class="reference internal" href="../tables.html"><em>Tables</em></a> for difference between table types.</p> <p>The default flags are <tt class="docutils literal"><span class="pre">TABLE_HASH_KEY</span></tt>.</p> </div> <div class="section" id="key-type"> <h3>8.3.26.4.3. <tt class="docutils literal"><span class="pre">key_type</span></tt><a class="headerlink" href="#key-type" title="Permalink to this headline">¶</a></h3> <p>It specifies key type.</p> <p>If you specify <tt class="docutils literal"><span class="pre">TABLE_HASH_KEY</span></tt>, <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> or <tt class="docutils literal"><span class="pre">TABLE_DAT_KEY</span></tt> as <tt class="docutils literal"><span class="pre">flags</span></tt> parameter, you need to specify <tt class="docutils literal"><span class="pre">key_type</span></tt> option.</p> <p>See <a class="reference internal" href="../types.html"><em>データ型</em></a> for all types.</p> <p>The default value is none.</p> </div> <div class="section" id="value-type"> <h3>8.3.26.4.4. <tt class="docutils literal"><span class="pre">value_type</span></tt><a class="headerlink" href="#value-type" title="Permalink to this headline">¶</a></h3> <p>It specifies value type.</p> <p>You can use value when you specify <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt>, <tt class="docutils literal"><span class="pre">TABLE_HASH_KEY</span></tt> or <tt class="docutils literal"><span class="pre">TABLE_PAT_KEY</span></tt> as <tt class="docutils literal"><span class="pre">flags</span></tt> parameter. Value type must be a fixed size type. For example, <tt class="docutils literal"><span class="pre">UInt32</span></tt> can be used but <tt class="docutils literal"><span class="pre">ShortText</span></tt> cannot be used. Use columns instead of value.</p> <p>The default value is none.</p> </div> <div class="section" id="default-tokenizer"> <h3>8.3.26.4.5. <tt class="docutils literal"><span class="pre">default_tokenizer</span></tt><a class="headerlink" href="#default-tokenizer" title="Permalink to this headline">¶</a></h3> <p>It specifies the default tokenizer that is used on searching and data loading.</p> <p>You cannot use <tt class="docutils literal"><span class="pre">default_tokenizer</span></tt> with <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> because <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> cannot be used for index.</p> <p>You must specify <tt class="docutils literal"><span class="pre">default_tokenizer</span></tt> for a table that is used for fulltext search index.</p> <p>See <a class="reference internal" href="../tokenizers.html"><em>Tokenizers</em></a> for all tokenizers</p> <p>The default value is none.</p> </div> <div class="section" id="normalizer"> <h3>8.3.26.4.6. <tt class="docutils literal"><span class="pre">normalizer</span></tt><a class="headerlink" href="#normalizer" title="Permalink to this headline">¶</a></h3> <p>It specifies a normalizer that is used to normalize key.</p> <p>You cannot use <tt class="docutils literal"><span class="pre">normalizer</span></tt> with <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> because <tt class="docutils literal"><span class="pre">TABLE_NO_KEY</span></tt> doesn't support key.</p> <p>See <a class="reference internal" href="../normalizers.html"><em>Normalizers</em></a> for all normalizsers.</p> <p>The default value is none.</p> </div> </div> <div class="section" id="return-value"> <h2>8.3.26.5. Return value<a class="headerlink" href="#return-value" title="Permalink to this headline">¶</a></h2> <p><tt class="docutils literal"><span class="pre">table_create</span></tt> returns <tt class="docutils literal"><span class="pre">true</span></tt> as body on success such as:</p> <div class="highlight-none"><div class="highlight"><pre>[HEADER, true] </pre></div> </div> <p>If <tt class="docutils literal"><span class="pre">table_create</span></tt> fails, error details are in <tt class="docutils literal"><span class="pre">HEADER</span></tt>.</p> <p>See <a class="reference internal" href="../command/output_format.html"><em>Output format</em></a> for <tt class="docutils literal"><span class="pre">HEADER</span></tt>.</p> </div> <div class="section" id="see-also"> <h2>8.3.26.6. See also<a class="headerlink" href="#see-also" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li><a class="reference internal" href="../tables.html"><em>Tables</em></a></li> <li><a class="reference internal" href="column_create.html"><em>column_create</em></a></li> <li><a class="reference internal" href="../tokenizers.html"><em>Tokenizers</em></a></li> <li><a class="reference internal" href="../normalizers.html"><em>Normalizers</em></a></li> <li><a class="reference internal" href="../command/output_format.html"><em>Output format</em></a></li> </ul> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="../../index.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">8.3.26. <tt class="docutils literal"><span class="pre">table_create</span></tt></a><ul> <li><a class="reference internal" href="#summary">8.3.26.1. Summary</a></li> <li><a class="reference internal" href="#syntax">8.3.26.2. Syntax</a></li> <li><a class="reference internal" href="#usage">8.3.26.3. Usage</a><ul> <li><a class="reference internal" href="#create-data-store-table">8.3.26.3.1. Create data store table</a></li> <li><a class="reference internal" href="#create-lexicon-table">8.3.26.3.2. Create lexicon table</a></li> <li><a class="reference internal" href="#create-tag-index-table">8.3.26.3.3. Create tag index table</a></li> <li><a class="reference internal" href="#create-range-index-table">8.3.26.3.4. Create range index table</a></li> </ul> </li> <li><a class="reference internal" href="#parameters">8.3.26.4. Parameters</a><ul> <li><a class="reference internal" href="#name">8.3.26.4.1. <tt class="docutils literal"><span class="pre">name</span></tt></a></li> <li><a class="reference internal" href="#flags">8.3.26.4.2. <tt class="docutils literal"><span class="pre">flags</span></tt></a></li> <li><a class="reference internal" href="#key-type">8.3.26.4.3. <tt class="docutils literal"><span class="pre">key_type</span></tt></a></li> <li><a class="reference internal" href="#value-type">8.3.26.4.4. <tt class="docutils literal"><span class="pre">value_type</span></tt></a></li> <li><a class="reference internal" href="#default-tokenizer">8.3.26.4.5. <tt class="docutils literal"><span class="pre">default_tokenizer</span></tt></a></li> <li><a class="reference internal" href="#normalizer">8.3.26.4.6. <tt class="docutils literal"><span class="pre">normalizer</span></tt></a></li> </ul> </li> <li><a class="reference internal" href="#return-value">8.3.26.5. Return value</a></li> <li><a class="reference internal" href="#see-also">8.3.26.6. See also</a></li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="suggest.html" title="previous chapter">8.3.25. suggest</a></p> <h4>Next topic</h4> <p class="topless"><a href="table_list.html" title="next chapter">8.3.27. table_list</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../../_sources/reference/commands/table_create.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="../../search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="table_list.html" title="8.3.27. table_list" >next</a> |</li> <li class="right" > <a href="suggest.html" title="8.3.25. suggest" >previous</a> |</li> <li><a href="../../index.html">groonga v3.0.2 documentation</a> »</li> <li><a href="../../reference.html" >8. リファレンスマニュアル</a> »</li> <li><a href="../command.html" >8.3. Command</a> »</li> </ul> </div> <div class="footer"> © Copyright 2009-2013, Brazil, Inc. </div> </body> </html>