タグ

全文検索に関するdelegateのブックマーク (13)

  • 誰でもわかる全文検索入門

    全文検索エンジンも、事前に検索対象のデータを調べてこのような索引を作っておくことで、高速な検索を実現しています。 インターネット検索の例 たとえばインターネット検索の場合、まず各サイトからデータを収集して、その中から索引に載せる単語を選んで索引を作ります。索引のデータは下の図の右側のような表になっています。各単語と、それがどのサイトのどこにあったのかを記録しておく形です。 検索の時は、この索引データを調べます。例えば利用者が「理解」という言葉で検索したら、索引の「理解」のところを調べます。そうすると「サイトAの8文字目と18文字目、サイトGの……」と出現場所がわかるので、すぐに結果を返せます。 なお、この図では索引の単語の並び方が適当ですが、実際にはと同じように「あいうえお順」などに並べておいて、すぐに単語を見つけられるようにしてあります。 索引にない単語 この仕組みの場合、索引にある単

    誰でもわかる全文検索入門
  • JavaScriptで全文検索(N-gram)を実装してみる! | Simple is Beautiful.

    プラコレアドベントカレンダーもラストスパート!こんにちは、森です! 仕組みをちゃんと理解するには実装してみることが一番!ということで、N-gramの中でも一番実装が簡単なuni-gramをjsで実装してみました! 目次 全文検索とは uni-gram インデックスの作成 文章にdocument IDを振る 文字列の分割 文字位置付与 トークンごとに位置情報をまとめる トークンをキーに引けるように保存 インデックスから検索 検索文字列をトークンに分割 インデックスからトークンのデータを取得 取得したデータをつなぎ合わせる 実装 動かし方 インデックスの作成 インデックスから文字列を検索 コード 参考文献 最後に 全文検索とは まず最初に全文検索とはなにかってことですが、Wikipediaで調べてみました「コンピュータにおいて、複数の文書(ファイル)から特定の文字列を検索すること。「ファイル名

    JavaScriptで全文検索(N-gram)を実装してみる! | Simple is Beautiful.
  • MattermostのMySQLで日本語の全文検索に対応する方法 | Step On Board

    Mattermostでは日語の部分検索が対応していませんので、例えば「よろしくお願いします。」を検索するときに「よろし」ではヒットしません。これじゃ使えない。 そこで、日語での部分検索(日語全文検索)に対応する方法をメモ的にご紹介しておきたいと思います。 但し、MySQLは5.7を利用します。(標準機能のngramを使う為) 5.6以前も対応できますが、手順が異なるので今回は 5.7 のみ。 ちなみにOSは CentOS 7 を想定して記述しています。 character-setの変更 my.cnf を修正してキャラクタセットを変更します。 $ vim /etc/my.cnf 下記の内容を追記、もしくは置き換えます。 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 inno

  • たてた Mattermost で 日本語全文検索 を可能にする - アレコレ・ティプス

    ・( 前回の記事の続きになります )・ asuki-yt.hatenablog.jp これで Mattermost が動いたのはいいものの、、 前回の記事では、インストールした Mattermost サーバーに投稿されたチャットデータ の日語全文検索 機能がないので、一旦、後付けで対応させる。 目次 環境のおさらい ストレージエンジン Mroonga の有効化 MariaDB の 設定ファイルの更新 ( my.cnf ) 設定の反映 インデックスの再構築 準備完了!サービス再起動 おまけ 環境のおさらい CentOS7 mattermost 4.7.3 ( 前回の記事の内容で稼働中 ) MariaDB   10.3.2 しかし、日語全文検索が効かない。 -> そこで今回は、、 Mroonga groonga mecab の環境を準備して、対応する話、、 にしようと思ったところ、 詳細を

    たてた Mattermost で 日本語全文検索 を可能にする - アレコレ・ティプス
  • Bing検索の裏側―BitFunnelのアルゴリズム - Hatena Developer Blog

    はてなアプリケーションエンジニアの id:takuya-a です。 この記事では、Microsoft の検索エンジン Bing で採用された BitFunnel アルゴリズムを紹介します。 昨年のエンジニアアドベントカレンダーでは、文字列検索のアルゴリズム全般について紹介しました(文字列アルゴリズムの学びかた - Hatena Developer Blog)。今年はそのなかでも、インデックス(索引)を使った全文検索アルゴリズムについてのお話になります。 この記事の前半は全文検索の入門にもなっていますので、検索技術になじみがない方にも楽しんでいただけるのではないでしょうか。 逆に、「そんなのもう知ってるよ!」という方は、題である「BitFunnel アルゴリズムの詳細」から目を通していただければと思います。 この記事は、はてなエンジニア Advent Calendar 2017の21日目の

    Bing検索の裏側―BitFunnelのアルゴリズム - Hatena Developer Blog
  • MySQLで全文検索をするために必要なこと - 小さな星がほらひとつ

    与えられたキーワードに合致するデータをデータベースから取得することを考えた時、完全一致であれば「=」で検索を行うと思います。 では与えられたキーワードを「含む」検索、つまり部分一致を行いたいのであればどうするか。最も簡単なのは「search_column like '%キーワード%'」といった形で、「like」を使いキーワードの前後にワイルドカードを与える方法でしょう。 ですがこれを何の気無しに使うのはちょっと危険。 上記のようなlike検索ではインデックスが利用されないため(※)、全レコードをスキャンします。 かつキーワードを部分一致で探したいようなカラムは、文章等の比較的大きなサイズであると考えられます。 そのため検索コストは大きく、数千〜数万行であればまだ良いかもしれませんが、数十万ともなると利用には耐えられないでしょう。(実体験) ※ただし前方一致検索であれば、最初のワイルドカード

    MySQLで全文検索をするために必要なこと - 小さな星がほらひとつ
  • FuelPHPでInnoDBの全文検索を利用してみる

    最低限必要なのはMySQLのバージョンです。 InnoDBのFULLTEXTインデックスはMySQL 5.6.4からのみ利用できます。1 また、InnoDBのFULLTEXTは空白区切りの単語検索しか対応していない2ため、 Mecabを使用して分かち書きして保存・検索します。 MySQL, PHPはインストール済みの前提で話を進めます。 また、Fuelの基的な知識があり、セットアップは済んでいるものとします。 MeCabは次の環境構築にてインストールしていきます。 環境構築 phpでmecabを使う手順 http://qiita.com/Keech/items/3b51a60c89b9e803b256 こちらの記事を参考に環境構築をしたのですが、自分の環境ではコピー&ペーストでは動かない箇所があったのでそれを込みでインストールコマンド全てを貼り付けます。 sudoは省略しているため、コマ

  • Oktavia全文検索エンジン - SphinxCon JP 2014

    2015/10/31に開催されたSphinxワークショップ@関西(https://japanunixsociety.doorkeeper.jp/events/32899)の発表資料です。

    Oktavia全文検索エンジン - SphinxCon JP 2014
  • 第4回 rroongaを使ったソースコード検索エンジンMilkode | gihyo.jp

    はじめまして、おんがえしと申します。 今回は私が作っているソースコード検索エンジンのMilkodeにて、rroonga(とその内部で動くgroonga)がどのように使われているのかを紹介します。 Milkodeの検索画面 ソースコードを検索するということ プログラマの仕事はプログラムを書くことですが、同じくらい「検索する」ことは多いのではないでしょうか。 ある関数の名前を変えたいので使っている箇所をすべて見つけたい ライブラリの仕様が変わった。使っているコードはどこだったか? コードリーディング中。今読んでいる関数の実体はどこにあるのか? ベーマガを買ってゲームのプログラムを写経していた頃から時代は進み、WebにアクセスすればゲームやOS、Webアプリなどのソースコードを無料[1]で手に入れることができるようになりました。必要なものをソースコードから検索し、知識として取り込んでいく技術は今

    第4回 rroongaを使ったソースコード検索エンジンMilkode | gihyo.jp
  • 第1回 全文検索エンジンgroongaを紹介します! | gihyo.jp

    今回から始まった隔週連載groongaでは、groongaを使いたくなるような情報を隔週毎にお届けします。 groongaとはGitHubで公開されているオープンソースの全文検索エンジンです。大量にある文書の中から目的のキーワードを持つ文書を高速に見つけることができます。 groongaのロゴ©groongaプロジェクト 第1回目である今回は、この連載についてとgroongaの特徴を紹介します。 この連載について まず、この連載について説明します。 この連載は「読者の皆さんがgroongaを使いたくなる!」ことを目指しています。そのために、次の2点の情報を次回から交互にお届けします。 groongaの利用事例の紹介 利用事例に関連した役立つ情報の紹介 利用事例を紹介することで、「⁠あそこでも使っているなら自分も使ってみようかなぁ」とか「こんな使い方をしているなら自分も使ってみようかなぁ」と

    第1回 全文検索エンジンgroongaを紹介します! | gihyo.jp
  • MySQL/PostgreSQL+Sennaで行うラクラク全文検索……Tritonn&Ludia導入のポイント | gihyo.jp

    Tritonn、Ludia、そしてSennaとは…… 昨今のWeb 2.0と呼ばれるようなWebシステムでは、一般的に大量のコンテンツデータを内部に保有しているのではないでしょうか。大量のコンテンツから目的のコンテンツをユーザが選び取る手段の一つとして全文検索が挙げられます。全文検索とは、検索対象コンテンツの中身すべてに対して検索を行うことを指します。たとえば、タグやタイトルを対象にした検索だけでは、目的のコンテンツを発見できないような場合に有効な検索です。 データベースに保持された大量のデータを簡単に全文検索したい、という場合も多いことでしょう。稿では、それを実現にする全文検索システムとして、次の2つを取り上げて紹介します。 Tritonn Ludia これらはそれぞれ、Tritonnは「MySQL⁠」⁠、Ludiaは「PostgreSQL」という、Webシステムを開発する上で人気の高

    MySQL/PostgreSQL+Sennaで行うラクラク全文検索……Tritonn&Ludia導入のポイント | gihyo.jp
  • SQLite Full Text Search with MeCab - mynote

    はじめに† SQLiteの全文検索の拡張FTSは、まだ実験的な段階でfts1, fts2と作っては破棄(?)してきて、今はfts3が最新のようです。(sqlite3.5.1)。ただし、コンパイル済みバイナリの配布は止めてしまったようです。実験段階なので欲しい人は自分でコンパイルしてね♥みたいな。このftsで日語が使えないとか色々言われているのに加えて、ちょっとプロトタイプをでっち上げるのに必要になりそうな雰囲気なので、日語でもftsが使えるようにしてみました。 ↑ そもそもの動機† 『SQLite の全文検索を Python から使ってみる (3)』を読んだ。ここでftsのデフォルトの英文用のtokenizer(空白で単語を区切る)で日語を無理やり使うためにMeCabを使って分かち書きをして、その文字列を挿入し、取り出したあとに連結とかしてた・・・。誰も知らないようだが、実はfts2

  • 全文検索エンジン「Lucene.Net」を使う

    「Lucene.Net」は.NET Framework上で利用できる「全文検索エンジン」です。例えば、ASP.NETを使ってWebサイトを作成する際に、サイト内のコンテンツを検索する検索ページを作成したいという場合や、Windowsアプリケーションで全文検索機能を利用したい場合にLucene.Netが利用できます。 Lucene.NetはApache Software Foundationが開発しているプロジェクトの1つで、オープンソースで開発されています。Java言語で記述された「Lucene」がそのオリジナルであり、これは、Wikipediaをはじめ多くのWebサイトで現在利用されています(Lucene-java WikiのPowerdBy) Luceneの.NET版であるLucene.NETは、Java版と同様Apache Software Foundationの「Lucene.Ne

    全文検索エンジン「Lucene.Net」を使う
  • 1