<!DOCTYPE html>
<html>
<head>
</head>
<body>
<dl style="line-height: 1.5; margin-left: 2em">
<dt style="clear: both; float: left; font-weight: bold; width: 8em">Author</dt>
<dd style="margin-left: 8.5em">Kouhei Sutou <kou****@clear*****></dd>
<dt style="clear: both; float: left; font-weight: bold; width: 8em">Date</dt>
<dd style="margin-left: 8.5em">2011-06-28 12:13:26 +0900 (Tue, 28 Jun 2011)</dd>
<dt style="clear: both; float: left; font-weight: bold; width: 8em">New Revision</dt>
<dd style="margin-left: 8.5em"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4">1cdad5c7e70f351ade55d53f3c2252600bdf2fc4</a></dd>
<dt style="clear: both; float: left; font-weight: bold; width: 8em">Log</dt>
<dd style="margin-left: 8.5em"><pre style="border: 1px solid #aaa; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; padding: 0.5em">[dco] add note about wrapper mode.</pre></dd>
<dt style="clear: both; float: left; font-weight: bold; width: 8em">Modified files</dt>
<dd style="margin-left: 8.5em">
<ul>
<li><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#diff-0">doc/ja/source/userguide/wrapper.rst</a></li>
</ul>
</dd>
</dl>
<div class="diff-section" style="clear: both">
<table style="border-collapse: collapse; border: 1px solid #aaa">
<thead>
<tr class="diff-header" style="border: 1px solid #aaa">
<td colspan="3">
<pre style="border: 0; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; margin: 0; padding: 0.5em; white-space: normal"><span class="diff-header" style="background-color: #eaf2f5; color: #999999; display: block; white-space: pre"> Modified: doc/ja/source/userguide/wrapper.rst (+46 -0)</span>
<span class="diff-header-mark" style="background-color: #eaf2f5; color: #999999; display: block; white-space: pre">===================================================================</span>
</pre>
</td>
</tr>
</thead>
<tbody>
<tr>
<th class="diff-line-number" style="border: 1px solid #aaa">
<pre style="border: 0; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; margin: 0; padding: 0.5em; white-space: normal"><span class="diff-line-number-hunk-header" style="display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0L177">...</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0L178">178</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0L179">179</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0L180">180</a></span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
</pre>
</th>
<th class="diff-line-number" style="border: 1px solid #aaa">
<pre style="border: 0; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; margin: 0; padding: 0.5em; white-space: normal"><span class="diff-line-number-hunk-header" style="display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R177">...</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R178">178</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R179">179</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R180">180</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R181">181</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R182">182</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R183">183</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R184">184</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R185">185</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R186">186</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R187">187</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R188">188</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R189">189</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R190">190</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R191">191</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R192">192</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R193">193</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R194">194</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R195">195</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R196">196</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R197">197</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R198">198</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R199">199</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R200">200</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R201">201</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R202">202</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R203">203</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R204">204</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R205">205</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R206">206</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R207">207</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R208">208</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R209">209</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R210">210</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R211">211</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R212">212</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R213">213</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R214">214</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R215">215</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R216">216</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R217">217</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R218">218</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R219">219</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R220">220</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R221">221</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R222">222</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R223">223</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R224">224</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R225">225</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/mroonga/mroonga/commit/1cdad5c7e70f351ade55d53f3c2252600bdf2fc4#L0R226">226</a></span>
</pre>
</th>
<td class="diff-content" style="border: 1px solid #aaa">
<pre style="border: 0; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; margin: 0; padding: 0.5em; white-space: normal"><span class="diff-hunk-header" style="background-color: #eaf2f5; color: #999999; display: block; white-space: pre">@@ -178,3 +178,49 @@ <span class="diff-context" style="background-color: #ffffaa; color: #000000">groongaストレージエンジンではデフォルトでログの出力を行</span></span>
<span class="diff-not-changed" style="display: block; white-space: pre"> </span>
<span class="diff-not-changed" style="display: block; white-space: pre"> 1. ``groonga.log`` ファイルの名前を変更(OSコマンドのmvなどで)</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> 2. MySQLサーバに対して"FLUSH LOGS"を実行(mysqlコマンドあるいはmysqladminコマンドにて)</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+注意点</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+------</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+0.7でのラッパーモードの実装はMySQLのストレージエンジンAPIを実直に利用したものになっています。そのため、「全文検索結果で結果レコードを絞り込むことにより不要なレコードアクセスを減らし、全文検索結果を用いた高速な検索を実現する」ということができません。これはMySQLのストレージエンジンAPIの制限なのですが、0.8では解消し、高速に検索できるようにする予定です。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+0.7での動作と0.8で予定している動作の概要は以下の通りです。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+0.7での動作</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+^^^^^^^^^^^</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+0.7ではMySQLのストレージエンジンAPIに素直に従った実装になってるため、全文検索結果を有効に活用しきれていません。MySQLのストレージエンジンAPIに従った場合の動作を以下に示します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+サンプルクエリは ``SELECT * FROM users WHERE users.age >= 20 AND MATCH(description) AGAINST("趣味");`` とします。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+1. MySQLはクエリのうち全文検索条件の部分「 ``MATCH(description) AGAINS("趣味")`` 」だけで検索するようにgroongaストレージエンジンに依頼します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+2. groongaストレージエンジンはMySQLから渡された条件で全文検索を行います。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+3. MySQLはクエリから全文検索条件の部分「 ``MATCH(description) AGAINS("趣味")`` 」を取り除いたクエリ「 ``SELECT * FROM users WHERE users.age >= 20`` 」で検索するようgroongaストレージエンジンに依頼します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+4. groongaストレージエンジンはMySQLから渡された条件で検索するようにラップしているストレージエンジンに依頼します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+5. MySQLはgroongaストレージエンジンにマッチしたレコードを順に返すように要求します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+6. groongaストレージエンジンはラップしているストレージエンジンからレコードを順に取り出してMySQLに返します。このとき返すレコードは「 ``users.age >= 20`` 」にマッチしたレコードです。「 ``MATCH(description) AGAINS ("趣味")`` 」での絞り込みは行われていません。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+7. MySQLはgroongaストレージエンジンから返ってきたそれぞれのレコードについて、全文検索結果のスコアを問い合せます。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+8. groongaストレージエンジンは各レコードについて「 ``MATCH(description) AGAINS ("趣味")`` 」がヒットしていればスコアを返し、そうでなければ「ヒットしなかったという特別なスコア」を返します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+9. MySQLはgroongaストレージエンジンが返したスコアを確認し、「ヒットしなかったという特別なスコア」が返されたレコードを検索結果から除去します。この時点ではじめて全文検索結果がレコードの絞り込みに使われます。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+10. MySQLはgroongaストレージエンジンが返したレコード(= ラップしているストレージエンジンが返したレコード)から、「 ``MATCH(description) AGAINS ("趣味")`` 」にヒットしなかったレコードを削除したものをクライアントに返します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+このうち、6.のところで全文検索結果を反映したレコードのみを返すことができれば余計なレコードアクセスが減り、より高いパフォーマンスをだせます。しかし、MySQLのストレージエンジンAPIでは「全文検索以外の条件でレコードを取得した後に全文検索結果を参照してレコードをフィルターする」という動作のためせっかくのgroongaの高速な全文検索機能を活かしきれていません。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+0.8での動作</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+^^^^^^^^^^^</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+0.8ではMySQLのストレージエンジンAPIの制限を回避し、全文検索結果を有効に活用した高速な検索を実現する方法を実装する予定です。予定している実装方法を以下に示します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+サンプルクエリは ``SELECT * FROM users WHERE users.age >= 20 AND MATCH(description) AGAINST("趣味");`` とします。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+1. MySQLはクエリのうち全文検索条件の部分「 ``MATCH(description) AGAINS("趣味")`` 」だけで検索するようにgroongaストレージエンジンに依頼します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+2. groongaストレージエンジンはMySQLから渡された条件で全文検索を行います。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+3. MySQLはクエリから全文検索条件の部分「 ``MATCH(description) AGAINS("趣味")`` 」を取り除いたクエリ「 ``SELECT * FROM users WHERE users.age >= 20`` 」で検索するようgroongaストレージエンジンに依頼します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+4. groongaストレージエンジンはMySQLから渡されたクエリに全文検索でヒットしたレコードで絞り込む条件「 ``id IN (1, 3, 4, ...)`` 」を追加したクエリ「 ``SELECT * FROM users WHERE users.age >= 20 AND id IN (1, 3, 4, ...)`` 」で検索するよう、ラップしているストレージエンジンに依頼します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+5. MySQLはgroongaストレージエンジンにレコードを順に返すように要求します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+6. groongaストレージエンジンはラップしているストレージエンジンからレコードを順に取り出してMySQLに返します。このとき返すレコードは「 ``users.age >= 20 AND id IN (1, 3, 4, ...)`` 」にマッチしたレコードなので、「 ``MATCH(description) AGAINS ("趣味")`` 」での絞り込み結果も反映されています。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+7. MySQLはgroongaストレージエンジンから返ってきたそれぞれのレコードについて、全文検索結果のスコアを問い合せます。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+8. groongaストレージエンジンは各レコードについて「 ``MATCH(description) AGAINS ("趣味")`` 」で検索した結果のスコアを返します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+9. MySQLはgroongaストレージエンジンが返したレコードをクライアントに返します。</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+ポイントは4.の「全文検索でヒットしたレコードで絞り込む条件」を追加している部分です。これで「全文検索条件での絞り込みで無駄なレコードアクセスを減らすことができない」というMySQLのストレージエンジンAPIの制限を回避することができます。これにより、全文検索結果を用いて無駄なレコードアクセスを減らすことができるため、高速な全文検索を実現できます。</span>
</pre>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>