全文検索とは、登録された文書の中から特定のキーワードを含む文書を探し出すことです。DoqueDBでは、リレーショナルデータベースに全文検索機能がシームレスに組み込まれています。
DoqueDBの全文検索では、検索条件のAND、OR、NOT演算を指定できるだけでなく、条件の重み付けを変更したり、スコア計算のパラメータを調整できるなど、利用者の検索意図に沿った自由度の高い検索を行うことができます。また、任意の文章を指定して文書を検索する類似文書検索や、検索結果から希望に近い結果を選び、それを条件に加えて再検索する関連語拡張など、全文検索の利便性を高めるさまざまな機能が用意されています。
下記の例では青空文庫の作品データから「難破船」「無人島」「太平洋」「漂流」を含む作品を検索し、見つかったキーワードの周辺テキストを表示しています。2つめの検索例では「太平洋」の重みを2倍にしており、その結果が検索結果に反映されています。
技術者向けブログサイトQiitaでも、DoqueDBの構文や異表記正規化機能をMySQLやPostgreSQLと比較したり、Sudachi同義語辞書をDoqueDBから使うための解説記事を公開しています。
$ /var/lib/DoqueDB/bin/sqli -remote localhost 54321 \
-user root -password doqadmin -code utf-8 -database sampleSqli
SQL> select docId, score(content), title, lastName, firstName,
kwic(content for 50 enclose with '<BEGIN>' and '<END>')
from AozoraBunko
where content contains('難破船'&'無人島'&'太平洋'&'漂流')
order by score(content) desc limit 5;
{docId,score(content),title,lastName,firstName,kwic(content for 50 enclose with '<BEGIN>' and '<END>')}
{1323,7.7543659285243E-1,海島冒険奇譚 海底軍艦,押川,春浪,海底軍艦
押川春浪
はしがき
一。<BEGIN>太平洋<END>の波に浮べる、この船にも似たる我日本の國人は}
{42294,7.7204382103496E-1,怪奇人造島,寺島,柾史,ないじゃないか。僕等まで射殺して、たった一人で、<BEGIN>太平洋<END>を<BEGIN>漂流<END>するなンか、心細いだろう」
豹のような水夫}
{42767,7.37552312993191E-1,無人島に生きる十六人,須川,邦彦,である。
私は、中川教官に、龍睡丸が遭難して、<BEGIN>太平洋<END>のまんなかの<BEGIN>無人島<END>に漂着したときの話をしていただきたい}
{54331,6.35019163291032E-1,海上の道,柳田,国男,持っていったものもある。今までの日本人論をみると、<BEGIN>太平洋<END>の交通を考慮に入れることが少し不十分であった。}
{2718,6.03568656998978E-1,恐竜島,海野,十三,いふつうの電球だ。しかしおよそこの<BEGIN>無人島<END>には、にあわぬものだった。
「<BEGIN>漂流<END>して、この島へ流れついたんだ}
$ /var/lib/DoqueDB/bin/sqli -remote localhost 54321 \
-user root -password doqadmin -code utf-8 -database sampleSqli
SQL> select docId, score(content), title, lastName, firstName,
kwic(content for 100 enclose with '<BEGIN>' and '<END>')
from AozoraBunko
where content contains('難破船'&'無人島'&weight('太平洋' scale 2.0)&'漂流')
order by score(content) desc limit 5;
{docId,score(content),title,lastName,firstName,kwic(content for 50 enclose with '<BEGIN>' and '<END>')}
{42294,9.24264231183182E-1,怪奇人造島,寺島,柾史,ないじゃないか。僕等まで射殺して、たった一人で、<BEGIN>太平洋<END>を<BEGIN>漂流<END>するなンか、心細いだろう」
豹のような水夫}
{42767,8.99165018000716E-1,無人島に生きる十六人,須川,邦彦,である。
私は、中川教官に、龍睡丸が遭難して、<BEGIN>太平洋<END>のまんなかの<BEGIN>無人島<END>に漂着したときの話をしていただきたい}
{1323,8.82139398399233E-1,海島冒険奇譚 海底軍艦,押川,春浪,海底軍艦
押川春浪
はしがき
一。<BEGIN>太平洋<END>の波に浮べる、この船にも似たる我日本の國人は}
{54331,7.88160657440783E-1,海上の道,柳田,国男,持っていったものもある。今までの日本人論をみると、<BEGIN>太平洋<END>の交通を考慮に入れることが少し不十分であった。}
{2718,6.84701141119829E-1,恐竜島,海野,十三,いふつうの電球だ。しかしおよそこの<BEGIN>無人島<END>には、にあわぬものだった。
「<BEGIN>漂流<END>して、この島へ流れついたんだ}