DoqueDB：デモサイトで青空文庫を検索しよう

### 正式公開しました (2024年2月16日追記)

当記事をご覧いただきありがとうございます。長らくお待たせいたしましたが、DoqueDBはようやく正式公開を果たすことができました。以下の記事にてWebサイトやGitHubプロジェクトをご案内しております。

[**DoqueDB：MySQL, PostgreSQLと構文を比較してみる**](https://qiita.com/junnohta999/items/0afe45f8050bbc4af2ed)

これ以降の内容は正式公開前のβ版に関するものです。内容は正式版にも当てはまりますが、リンク先は順次公式サイトへと切り替わりますので、ご留意ください。

<hr>

引き続きDoqueDBの全文検索についての記事でお時間を頂戴いたします。前回の記事はこちらになります。
* [DoqueDB：もうひとつの全文検索データベース](https://qiita.com/junnohta999/items/ee4e8332a6ee3f8930bc "https://qiita.com/junnohta999/items/ee4e8332a6ee3f8930bc")

### デモサイトで自然文検索を試そう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3510207/0755a1c8-793f-bee3-c55a-1ddf851b801b.png)
上の図は、DoqueDBデモサイトでの検索のようすです。前回は、「[使ってみよう](https://dqdemo.concept.ricoh/doc/howtouse.html?utm_source=qiita&utm_medium=referral&utm_campaign=beta "https://dqdemo.concept.ricoh/doc/howtouse.html")」を参照しながら、β版パッケージに付属のサンプルデータをいろいろ検索してみました。青空文庫の作品データの一部を使っていますが、件数が少なかったこともあり、ご自分でお試しいただくには消化不良気味であったかと思います。

今回はDoqueDBのデモサイトで「自然文検索」をお試しいただき、キーワードを限定しない全文検索がどれくらい役立つものなのか、ご覧いただくことにしましょう。デモサイトはこちらからご訪問いただけます。

* [DoqueDBデモサイト](https://dqdemo.concept.ricoh/?utm_source=qiita&utm_medium=referral&utm_campaign=beta "https://dqdemo.concept.ricoh/")

<strong>【おまけ】</strong>記事の末尾に、DoqueDB β版をWindowsのWSL2 + Ubuntuにインストールし、青空文庫のデータを自分でダウンロード・登録して、デモサイト相当の検索を行う方法を示しています。お楽しみに！

### 江戸川乱歩作品の一節を検索する

デモサイトの使い方ページにある検索例、江戸川乱歩の『仮面の恐怖王』冒頭の一節を検索してみましょう。

>東京上野公園の不忍池のそばに、ふしぎな建物がたちました。両国のもとの国技館をぐっと小さくしたような、まるい建物で、外がわの壁も、まる屋根も、ぜんぶ、まっ白にぬってあるのです。

実行すると、検索結果の上位50件中、江戸川乱歩作品が24件見つかりました。検索結果の画面ショットおよび適合度、タイトル、著者のリストを以下に示しておきましょう。画面ショットでは検索されたキーワードがハイライトされています。リストでは江戸川乱歩作品が<font color="red">赤字</font>で示されています。適合度を見ると、やはり検索したテキストを含む作品が飛び抜けて高い数値になることがわかります。

<details><summary>検索結果上位50件の画面ショット</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3510207/55241d50-63e0-6172-4e18-e03d470d9ac5.png)
</details>

<details><summary>検索結果上位50件のリスト</summary>

<table>
<thead><tr><th>適合度</th><th>タイトル</th><th>著者</th></tr></thead>
<tr><td><font color="red">0.71135</font></td><td><font color="red"><strong>仮面の恐怖王</strong></font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.47181</font></td><td><font color="red">目羅博士の不思議な犯罪</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.42542</font></td><td><font color="red">吸血鬼</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.41205</td><td>日和下駄</td><td>永井 荷風</td></tr>
<tr><td>0.38171</td><td>本所両国</td><td>芥川 竜之介</td></tr>
<tr><td><font color="red">0.37228</font></td><td><font color="red">虎の牙</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.37131</td><td>上野</td><td>永井 荷風</td></tr>
<tr><td>0.36481</td><td>秘密礼拝式</td><td>ブラックウッド アルジャーノン</td></tr>
<tr><td>0.35849</td><td>日本文化私観</td><td>坂口 安吾</td></tr>
<tr><td>0.35363</td><td>本所両国</td><td>芥川 竜之介</td></tr>
<tr><td><font color="red">0.35261</font></td><td><font color="red">妖人ゴング</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.34019</font></td><td><font color="red">鉄人Ｑ</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.33793</td><td>白い月の世界</td><td>中谷 宇吉郎</td></tr>
<tr><td>0.33692</td><td>風流太平記</td><td>山本 周五郎</td></tr>
<tr><td>0.33247</td><td>土俵の夢</td><td>尾崎 士郎</td></tr>
<tr><td><font color="red">0.32832</font></td><td><font color="red">透明怪人</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.32745</td><td>超人間Ｘ号</td><td>海野 十三</td></tr>
<tr><td><font color="red">0.32522</font></td><td><font color="red">黄金豹</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.32192</td><td>水　附渡船</td><td>永井 荷風</td></tr>
<tr><td><font color="red">0.31946</font></td><td><font color="red">少年探偵団</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.31727</font></td><td><font color="red">怪人二十面相</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.31675</font></td><td><font color="red">超人ニコラ</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.31658</td><td>赤ひげ診療譚</td><td>山本 周五郎</td></tr>
<tr><td><font color="red">0.31218</font></td><td><font color="red">宇宙怪人</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.30744</td><td>黒い月の世界</td><td>中谷 宇吉郎</td></tr>
<tr><td>0.29838</td><td>死体の匂い</td><td>田中 貢太郎</td></tr>
<tr><td>0.29295</td><td>菊人形</td><td>宮本 百合子</td></tr>
<tr><td>0.29166</td><td>怪星ガン</td><td>海野 十三</td></tr>
<tr><td><font color="red">0.29055</font></td><td><font color="red">妖星人Ｒ</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.29036</td><td>ニールスのふしぎな旅</td><td>矢崎 源九郎</td></tr>
<tr><td>0.28668</td><td>金属人間</td><td>海野 十三</td></tr>
<tr><td>0.28458</td><td>妖婆</td><td>芥川 竜之介</td></tr>
<tr><td><font color="red">0.28395</font></td><td><font color="red">灰色の巨人</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.27943</font></td><td><font color="red">奇面城の秘密</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.27699</font></td><td><font color="red">夜光人間</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.27653</td><td>待呆け議会風景</td><td>宮本 百合子</td></tr>
<tr><td>0.27493</td><td>旅の仲間</td><td>アンデルセン ハンス・クリスチャン</td></tr>
<tr><td><font color="red">0.27187</font></td><td><font color="red">塔上の奇術師</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.27103</font></td><td><font color="red">探偵少年</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.27073</font></td><td><font color="red">電人Ｍ</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.26824</td><td>角力</td><td>久保田 万太郎</td></tr>
<tr><td><font color="red">0.26791</font></td><td><font color="red">妖怪博士</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.26607</td><td>竹柏記</td><td>山本 周五郎</td></tr>
<tr><td>0.26381</td><td>両国今昔</td><td>木村 荘八</td></tr>
<tr><td>0.2632</td><td>明治世相百話</td><td>山本 笑月</td></tr>
<tr><td><font color="red">0.25996</font></td><td><font color="red">大金塊</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.25595</font></td><td><font color="red">怪奇四十面相</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.25568</font></td><td><font color="red">魔法人形</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.25525</font></td><td><font color="red">江川蘭子</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td>0.25332</td><td>山彦乙女</td><td>山本 周五郎</td></tr>
</table>

</details>

実際に検索されるキーワードと重み付けは、以下のようになります。これはデモサイト上でSQLを実行して確認した結果ですが、ご自分で青空文庫のデータを登録すれば、ほぼ同じ数値が得られるはずです。

```shell
$ sqli_cmd="/var/lib/DoqueDB/bin/sqli -remote localhost 54321
-user root -password doqadmin -code utf-8"
$ query="select word(content) from AozoraBunko
where content contains freetext(
'東京上野公園の不忍池のそばに、ふしぎな建物がたちました。両国のもとの国技館をぐっと小さくしたような、まるい建物 で、外がわの壁も、まる屋根も、ぜんぶ、まっ白にぬってあるのです。')"
$ $sqli_cmd -database sampleSqli -sql "$query"

{word(content)}
{'まっ' language '' category 'Helpful' scale 0.67 df 7865}
{'忍 池' language '' category 'Helpful' scale 0.20 df 90}
{'不 忍' language '' category 'Helpful' scale 0.20 df 152}
{'国技館' language '' category 'Helpful' scale 0.67 df 52}
{'建物' language '' category 'Helpful' scale 0.80 df 1793}
{'ぎな 建物' language '' category 'Helpful' scale 0.20 df 1}
{'東京 上野' language '' category 'Helpful' scale 0.20 df 12}
{'ぜんぶ' language '' category 'Helpful' scale 0.67 df 116}
{'上野 公園' language '' category 'Helpful' scale 0.20 df 112}
{'まっ 白' language '' category 'Helpful' scale 0.20 df 275}
```

出力の中で、scaleは重要度、dfは文書頻度を表します。何の変哲もない単語を検索するだけで、これだけ多くの江戸川乱歩作品があぶり出されるのは不思議な気もしますが、検索結果のハイライトを見ると、「ぜんぶ」「まっ白」などの語がよく使われているようですね。

検索結果を表示する際には、検索キーワードをタグ付けすることができます。これを行うには、kwic関数にenclose withを指定します。「[使ってみよう](https://dqdemo.concept.ricoh/doc/howtouse.html?utm_source=qiita&utm_medium=referral&utm_campaign=beta "https://dqdemo.concept.ricoh/doc/howtouse.html")」にselect word()やenclose withの使用例を追記しましたので、ぜひご確認ください。

### 冒頭の一節で同じ著者の作品が見つかるもの

江戸川乱歩以外にも、作品の冒頭の一節を検索することで、同じ著者の作品が見つかるケースがいくつかあります。その例を2つほどお目にかけましょう。

1つは夢野久作「山羊髯編輯長」です。冒頭の一段落を検索したところ、50件中39件が同じ著者の作品でした。検索テキストを含む作品の適合度が高いのも同じ傾向です。

<strong>「山羊髯編輯長」冒頭の一段落</strong>

>「玄洋日報社」と筆太に書いた、真黒けな松板の看板を発見した吾輩はガッカリしてしまった。コンナ汚穢い新聞社に俺は這入るのかと思って……。

<details><summary>検索結果上位50件のリスト(DoqueDB, Aozorasearch)</summary>

<table>
<thead><tr><th>適合度</th><th>タイトル</th><th>著者</th></tr></thead>
<tr><td><font color="red">0.87677</font></td><td><font color="red"><strong>山羊髯編輯長</strong></font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.46266</font></td><td><font color="red">父杉山茂丸を語る</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.45122</font></td><td><font color="red">冗談に殺す</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.42697</font></td><td><font color="red">キチガイ地獄</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.41323</font></td><td><font color="red">一足お先に</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.40109</font></td><td><font color="red">霊感！</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.39502</font></td><td><font color="red">鉄鎚</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td>0.35266</td><td>瘋癲老人日記</td><td>谷崎 潤一郎</td></tr>
<tr><td><font color="red">0.34501</font></td><td><font color="red">ドグラ・マグラ</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.34491</font></td><td><font color="red">近世快人伝</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.32297</font></td><td><font color="red">爆弾太平記</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.31584</font></td><td><font color="red">ココナットの実</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td>0.30398</td><td>ナガレボシ</td><td>新美 南吉</td></tr>
<tr><td><font color="red">0.30091</font></td><td><font color="red">スランプ</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.30054</font></td><td><font color="red">甲賀三郎氏に答う</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.29632</font></td><td><font color="red">少女地獄</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.29206</font></td><td><font color="red">いなか、の、じけん</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.2808</font></td><td><font color="red">近眼芸妓と迷宮事件</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.27661</font></td><td><font color="red">超人鬚野博士</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.27267</font></td><td><font color="red">二重心臓</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td>0.27072</td><td>鍵</td><td>谷崎 潤一郎</td></tr>
<tr><td><font color="red">0.26838</font></td><td><font color="red">焦点を合せる</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.26751</font></td><td><font color="red">復讐</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.26535</font></td><td><font color="red">殺人迷路</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.26443</font></td><td><font color="red">悪魔祈祷書</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.26349</font></td><td><font color="red">難船小僧</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.26196</font></td><td><font color="red">冥土行進曲</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.26157</font></td><td><font color="red">戦場</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.25789</font></td><td><font color="red">Ｓ岬西洋婦人絞殺事件</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td>0.25283</td><td>一円本流行の害毒と其裏面談</td><td>宮武 外骨</td></tr>
<tr><td><font color="red">0.25213</font></td><td><font color="red">斜坑</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.24348</font></td><td><font color="red">けむりを吐かぬ煙突</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.24072</font></td><td><font color="red">無系統虎列剌</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.23948</font></td><td><font color="red">人間腸詰</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.23811</font></td><td><font color="red">木魂</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.23698</font></td><td><font color="red">支那米の袋</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.23253</font></td><td><font color="red">巡査辞職</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.22986</font></td><td><font color="red">能ぎらい／能好き／能という名前</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.22273</font></td><td><font color="red">白菊</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.21775</font></td><td><font color="red">能とは何か</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td>0.21053</td><td>機関車を見ながら</td><td>芥川 竜之介</td></tr>
<tr><td>0.2099</td><td>漱石氏と私</td><td>高浜 虚子</td></tr>
<tr><td>0.20907</td><td>初代桂春団治研究</td><td>正岡 容</td></tr>
<tr><td>0.20808</td><td>人格を認知せざる国民</td><td>新渡戸 稲造</td></tr>
<tr><td><font color="red">0.20632</font></td><td><font color="red">創作人物の名前について</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td><font color="red">0.20594</font></td><td><font color="red">衝突心理</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td>0.20555</td><td>コイヌ</td><td>村山 籌子</td></tr>
<tr><td><font color="red">0.2052</font></td><td><font color="red">猟奇歌</font></td><td><font color="red">夢野 久作</font></td></tr>
<tr><td>0.20488</td><td>生まれいずる悩み</td><td>有島 武郎</td></tr>
<tr><td>0.20412</td><td>オ寝坊ナ　ジヤガイモサン</td><td>村山 籌子</td></tr>
</table>
</details>

もう1つは吉川英治「大岡越前」です。冒頭の5行を検索したところ、50件中33件が同じ著者の作品になりました。

<strong>「大岡越前」冒頭の5行</strong>

>「犬がうらやましい。ああ、なぜ人間なぞに生れたろう」
> 　冗戯（じょうだん）にも、人間仲間で、こんなことばを聞くことが近年では、めずらしくもなくなった。
> 　笑えるうちは、まだよかったが、この頃ではそんな冗戯（じょうだん）が出ても、笑う者もなくなった。
>「何しろ、怪ッ態な世の中になったものです。お犬様には、分るでしょうが、人間どもには何が何だか、わけが分りませんな」
> 　これは、庶民とよぶ人間の群の、一致していうことばだったが、人々のあたまの中は、言葉どおりに、一致してはいなかった。

<details><summary>検索結果上位50件のリスト</summary>

<table>
<thead><tr><th>適合度</th><th>タイトル</th><th>著者</th></tr></thead>
<tr><td><font color="red">0.63252</font></td><td><font color="red"><strong>大岡越前</strong></font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.53601</font></td><td><font color="red">宮本武蔵</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.51726</font></td><td><font color="red">新編忠臣蔵</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.48008</font></td><td><font color="red">銀河まつり</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.45777</font></td><td><font color="red">野槌の百</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.44278</font></td><td><font color="red">宮本武蔵</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.44042</font></td><td><font color="red">平の将門</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.43699</font></td><td><font color="red">松のや露八</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.39954</font></td><td><font color="red">新書太閤記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.39106</font></td><td><font color="red">脚</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.38429</font></td><td><font color="red">鍋島甲斐守</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.37868</font></td><td><font color="red">宮本武蔵</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.35929</font></td><td><font color="red">宮本武蔵</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.35847</font></td><td><font color="red">剣難女難</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.35062</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.34374</font></td><td><font color="red">春の雁</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.33605</font></td><td><font color="red">旗岡巡査</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td>0.3331</td><td>幸福のうわおいぐつ</td><td>アンデルセン ハンス・クリスチャン</td></tr>
<tr><td>0.32955</td><td>山吹町の殺人</td><td>平林 初之輔</td></tr>
<tr><td>0.32593</td><td>火星兵団</td><td>海野 十三</td></tr>
<tr><td><font color="red">0.32509</font></td><td><font color="red">随筆　新平家</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td>0.32299</td><td>丹下左膳</td><td>林 不忘</td></tr>
<tr><td><font color="red">0.31909</font></td><td><font color="red">梅里先生行状記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.31662</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.31661</font></td><td><font color="red">新書太閤記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.31554</font></td><td><font color="red">新書太閤記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td>0.31326</td><td>巷説享保図絵</td><td>林 不忘</td></tr>
<tr><td><font color="red">0.3125</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.31192</font></td><td><font color="red">三国志</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td>0.31094</td><td>藍色の蟇</td><td>大手 拓次</td></tr>
<tr><td><font color="red">0.30847</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.30715</font></td><td><font color="red">新・水滸伝</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.30637</font></td><td><font color="red">新書太閤記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.30632</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td>0.30537</td><td>野のはくちょう</td><td>アンデルセン ハンス・クリスチャン</td></tr>
<tr><td><font color="red">0.3037</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.30277</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.30207</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td>0.30121</td><td>泡鳴五部作</td><td>岩野 泡鳴</td></tr>
<tr><td>0.3005</td><td>草迷宮</td><td>泉 鏡花</td></tr>
<tr><td>0.29822</td><td>丹下左膳</td><td>林 不忘</td></tr>
<tr><td><font color="red">0.29794</font></td><td><font color="red">新書太閤記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.29776</font></td><td><font color="red">牢獄の花嫁</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.2967</font></td><td><font color="red">折々の記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.29663</font></td><td><font color="red">江戸三国志</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td>0.29638</td><td>蘆刈</td><td>谷崎 潤一郎</td></tr>
<tr><td><font color="red">0.29582</font></td><td><font color="red">随筆　私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td>0.29181</td><td>『春と修羅』</td><td>宮沢 賢治</td></tr>
<tr><td><font color="red">0.29072</font></td><td><font color="red">新書太閤記</font></td><td><font color="red">吉川 英治</font></td></tr>
<tr><td><font color="red">0.2834</font></td><td><font color="red">私本太平記</font></td><td><font color="red">吉川 英治</font></td></tr>
</table>
</details>

ここまでのところ、期待する結果が首尾よく見つかっています。しかし、正直に申し上げて、これらはよくよく吟味された結果です。冒頭の一節で作品が検索できる作者はそう多くはありません。やはり「とがった」文体をもつ作者のほうが検索にかかりやすいのかもしれませんね。これはと思う作者の作品を、ご自分で検索してお試しください。

### あらすじで検索する

視点を変えて、こんどは冒頭の一節ではなく、あらすじで検索してみましょう。「こんな作品を読みたいなあ」という気分を文章にするわけですね。

> 船が難破し無人島に漂着した少年たちが島で生き延びて生還する

冒頭の一節と比較すると、こちらのほうが特徴をもったキーワードがそれなりに出現することから、同じような傾向をもつ作品が多数見つかるのではないかと想像できます。さあ、どうでしょうか。

検索結果の画面ショットとリストはこちらになります。「海が舞台の冒険小説」らしい作品が20件ほどありますね。該当する作品を<font color="red">赤枠</font>と<font color="red">赤字</font>で示しました。あらすじにピッタリではなくても、同じような特徴をもつ作品が見つかったわけです。これは類似文書検索としては、かなりよい結果だと言えそうです。

<details><summary>検索結果上位50件の画面ショット)</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3510207/ebf11b13-a135-860c-ef14-01ebdc80ea39.png)
</details>

<details><summary>検索結果上位50件のリスト)</summary>

<table>
<thead><tr><th>適合度</th><th>タイトル</th><th>著者</th></tr></thead>
<tr><td><font color="red">0.82254</font></td><td><font color="red">海島冒険奇譚　海底軍艦</font></td><td><font color="red">押川 春浪</font></td></tr>
<tr><td><font color="red">0.67701</font></td><td><font color="red">無人島に生きる十六人</font></td><td><font color="red">須川 邦彦</font></td></tr>
<tr><td><font color="red">0.66478</font></td><td><font color="red">新宝島</font></td><td><font color="red">江戸川 乱歩</font></td></tr>
<tr><td><font color="red">0.63979</font></td><td><font color="red">少年連盟</font></td><td><font color="red">佐藤 紅緑</font></td></tr>
<tr><td><font color="red">0.60772</font></td><td><font color="red">沈黙の水平線</font></td><td><font color="red">牧 逸馬</font></td></tr>
<tr><td>0.60567</td><td>大菩薩峠</td><td>中里 介山</td></tr>
<tr><td><font color="red">0.59543</font></td><td><font color="red">怪奇人造島</font></td><td><font color="red">寺島 柾史</font></td></tr>
<tr><td>0.5909</td><td>鎖国</td><td>和辻 哲郎</td></tr>
<tr><td><font color="red">0.54705</font></td><td><font color="red">ウニデス潮流の彼方</font></td><td><font color="red">橘 外男</font></td></tr>
<tr><td>0.52451</td><td>海上の道</td><td>柳田 国男</td></tr>
<tr><td>0.51944</td><td>イノチガケ</td><td>坂口 安吾</td></tr>
<tr><td><font color="red">0.51479</font></td><td><font color="red">恐竜島</font></td><td><font color="red">海野 十三</font></td></tr>
<tr><td>0.48178</td><td>ボニン島物語</td><td>久生 十蘭</td></tr>
<tr><td><font color="red">0.47002</font></td><td><font color="red">海難記</font></td><td><font color="red">久生 十蘭</font></td></tr>
<tr><td>0.46909</td><td>光をかかぐる人々</td><td>徳永 直</td></tr>
<tr><td>0.42492</td><td>他計甚麽（竹島）雑誌</td><td>松浦 武四郎</td></tr>
<tr><td>0.42234</td><td>自分は見た</td><td>千家 元麿</td></tr>
<tr><td>0.42213</td><td>氷島の漁夫</td><td>吉江 喬松</td></tr>
<tr><td><font color="red">0.38316</font></td><td><font color="red">海底大陸</font></td><td><font color="red">海野 十三</font></td></tr>
<tr><td>0.38254</td><td>後の業平文治</td><td>三遊亭 円朝</td></tr>
<tr><td>0.3821</td><td>紅毛傾城</td><td>小栗 虫太郎</td></tr>
<tr><td>0.37092</td><td>光と風と夢</td><td>中島 敦</td></tr>
<tr><td>0.36997</td><td>少年探偵長</td><td>海野 十三</td></tr>
<tr><td>0.3695</td><td>幽霊船</td><td>小川 未明</td></tr>
<tr><td>0.36932</td><td>颱風雑俎</td><td>寺田 寅彦</td></tr>
<tr><td><font color="red">0.36129</font></td><td><font color="red">「太平洋漏水孔」漂流記</font></td><td><font color="red">小栗 虫太郎</font></td></tr>
<tr><td><font color="red">0.35658</font></td><td><font color="red">大空魔艦</font></td><td><font color="red">海野 十三</font></td></tr>
<tr><td><font color="red">0.35623</font></td><td><font color="red">電気鳩</font></td><td><font color="red">海野 十三</font></td></tr>
<tr><td><font color="red">0.35421</font></td><td><font color="red">海に生くる人々</font></td><td><font color="red">葉山 嘉樹</font></td></tr>
<tr><td>0.34789</td><td>海郷風物記</td><td>木下 杢太郎</td></tr>
<tr><td><font color="red">0.34238</font></td><td><font color="red">恐竜艇の冒険</font></td><td><font color="red">海野 十三</font></td></tr>
<tr><td>0.34181</td><td>エリザベスとエセックス</td><td>片岡 鉄兵</td></tr>
<tr><td>0.34176</td><td>伊良湖岬</td><td>田山 花袋</td></tr>
<tr><td><font color="red">0.33637</font></td><td><font color="red">宝島</font></td><td><font color="red">佐々木 直次郎</font></td></tr>
<tr><td><font color="red">0.33454</font></td><td><font color="red">怪塔王</font></td><td><font color="red">海野 十三</font></td></tr>
<tr><td><font color="red">0.33403</font></td><td><font color="red">ガリバー旅行記</font></td><td><font color="red">スウィフト ジョナサン</font></td></tr>
<tr><td>0.32348</td><td>探検実記　地中の秘密</td><td>江見 水蔭</td></tr>
<tr><td><font color="red">0.32306</font></td><td><font color="red">重吉漂流紀聞</font></td><td><font color="red">久生 十蘭</font></td></tr>
<tr><td>0.32214</td><td>牡丹</td><td>宮本 百合子</td></tr>
<tr><td>0.32209</td><td>故郷七十年</td><td>柳田 国男</td></tr>
<tr><td><font color="red">0.32202</font></td><td><font color="red">昭和遊撃隊</font></td><td><font color="red">平田 晋策</font></td></tr>
<tr><td>0.32101</td><td>真珠</td><td>坂口 安吾</td></tr>
<tr><td>0.31769</td><td>ノンシャラン道中記</td><td>久生 十蘭</td></tr>
<tr><td>0.31675</td><td>鞄らしくない鞄</td><td>海野 十三</td></tr>
<tr><td>0.31395</td><td>東洋文化史における仏教の地位</td><td>高楠 順次郎</td></tr>
<tr><td>0.31303</td><td>船旅</td><td>アーヴィング ワシントン</td></tr>
<tr><td>0.31017</td><td>新生</td><td>島崎 藤村</td></tr>
<tr><td>0.30784</td><td>人外魔境</td><td>小栗 虫太郎</td></tr>
<tr><td>0.30664</td><td>大師の入唐</td><td>桑原 隲蔵</td></tr>
<tr><td>0.30428</td><td>病牀六尺</td><td>正岡 子規</td></tr>
</table>
</details>

DoqueDBで実際に検索されたキーワードを見てみましょう。これを見てわかるのは、検索キーワードが形態素になっていることです。

```shell
$ query="select word(content) from AozoraBunko
where content contains freetext(
'船が難破し無人島に漂着した少年たちが島で生き延びて生還する')"
$ $sqli_cmd -database sampleSqli -sql "$query"

{word(content)}
{'船' language '' category 'Helpful' scale 0.67 df 4050}
{'延び' language '' category 'Helpful' scale 0.67 df 1219}
{'難破' language '' category 'Helpful' scale 0.67 df 165}
{'生き' language '' category 'Helpful' scale 0.67 df 6311}
{'少年' language '' category 'Helpful' scale 0.67 df 2774}
{'少年 たち' language '' category 'Helpful' scale 0.20 df 168}
{'無人島' language '' category 'Helpful' scale 0.67 df 89}
{'漂着' language '' category 'Helpful' scale 0.67 df 101}
{'生き 延び' language '' category 'Helpful' scale 0.20 df 93}
{'生還' language '' category 'Helpful' scale 0.67 df 66}
```

DoqueDBの自然文検索は、以下のように行われます。

1. 入力された検索テキストを形態素解析して検索語の候補を作る。
2. 検索語候補を転置索引で個別に検索し、重み付けの情報を得る。
3. 重要と判定された検索語を組み合わせて最終的な検索を行う。

今回のケースでは、このような仕組みが検索条件にマッチしており、そのため、より希望に近い検索結果が得られたと言えそうです。

いかがでしょう。ここまでいくつか自然文検索を試してきましたが、従来の製品と比較して、使ってみたい特長などは見つかりましたでしょうか。

### Windowsで青空文庫フルセットの検索を試してみる

Windows上でも、WSL2 + Ubuntu 22.04 LTSをインストールすればDoqueDB β版を動かせることが確認できました。ただし、製品版相当のテストを行っていないため、全機能を利用できない可能性があることをご了承ください。

β版を入手いただくには、「[早期ご紹介ページ](https://doquedb.concept.ricoh/all-functions-at-one-stop-service/doquedb/?utm_source=qiita&utm_medium=referral&utm_campaign=beta "https://doquedb.concept.ricoh/all-functions-at-one-stop-service/doquedb/")」よりユーザー登録をお願いします。Ubuntu上でインストールする際には、お手数ですが、setup.shの38行めを以下のとおり変更してください。OSSとして正式公開される際には修正される予定です。

```shell
if [ $normalize == 1 ]; then
　↓
if [ $normalize -eq 1 ]; then
```

さらに、青空文庫のデータを自分で取得し、登録することにより、デモサイト相当の検索をローカルPC上で試すことが可能です。関連ドキュメント「[使ってみよう](https://dqdemo.concept.ricoh/doc/howtouse.html?utm_source=qiita&utm_medium=referral&utm_campaign=beta "https://dqdemo.concept.ricoh/doc/howtouse.html")」に、青空文庫のデータを取得し、登録する手順を加筆しましたので、ぜひご覧ください。

以下に文書リンクを再掲しておきます。

* [DoqueDB早期ご紹介ページ](https://doquedb.concept.ricoh/all-functions-at-one-stop-service/doquedb/?utm_source=qiita&utm_medium=referral&utm_campaign=beta "https://doquedb.concept.ricoh/all-functions-at-one-stop-service/doquedb/")
* [使ってみよう](https://dqdemo.concept.ricoh/doc/howtouse.html?utm_source=qiita&utm_medium=referral&utm_campaign=beta "https://dqdemo.concept.ricoh/doc/howtouse.html")

青空文庫を全文検索しようとする試みは、これまでにもいくつかありました。そのひとつとして、[@myokoym](https://qiita.com/myokoym "https://qiita.com/myokoym") さんが「[Aozorasearch 青空文庫全文検索](https://myokoym.net/aozorasearch/)」を公開されています。「(お試し)」と書かれていますが、DoqueDBの自然文検索に相当する類似文書検索の機能も提供されているので、いろいろと検索して比較されるのも面白いかと思います。Aozorasearchについては以下の記事をご覧ください。

* [青空文庫をNDC等で絞り込みつつ全文検索できるWebサイト「Aozorasearch」の紹介 - Qiita](https://qiita.com/myokoym/items/a97f6901d4fa12bb8cb9 "https://qiita.com/myokoym/items/a97f6901d4fa12bb8cb9")

### おわりに

ここまでお読みくださいまして、ありがとうございました。

今回の記事でも簡単に触れていますが、同じように転置索引を用いて全文検索を実装しているデータベースであっても、設計方針には違いがあり、そのことが検索結果に大きな差となって現れることがあります。ご自分の利用するシステムがどのような方向性で設計されており、どのような検索が得意で、どのような検索をあまり得意としないのか、それを見極めることが大切といえるでしょう。

全文検索を主眼とするシステムを構築する際の候補として、DoqueDBを選択肢のひとつに加えていただければ幸いです。それではまたお会いしましょう！