<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/suzukimilanpaak/">
    <title>suzukimilanpaak@wiki</title>
    <link>http://w.atwiki.jp/suzukimilanpaak/</link>
    <atom:link href="https://w.atwiki.jp/suzukimilanpaak/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>suzukimilanpaak@wiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2012-03-31T14:04:35+09:00</dc:date>
    <utime>1333170275</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/83.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/57.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/109.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/85.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/86.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/108.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/107.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/104.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/suzukimilanpaak/pages/106.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/83.html">
    <title>アイディア idea</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/83.html</link>
    <description>
          </description>
    <dc:date>2012-03-31T14:04:35+09:00</dc:date>
    <utime>1333170275</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/57.html">
    <title>コメントログ</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/57.html</link>
    <description>
          </description>
    <dc:date>2011-10-17T22:59:19+09:00</dc:date>
    <utime>1318859959</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/109.html">
    <title>emailsan</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/109.html</link>
    <description>
          </description>
    <dc:date>2011-03-20T20:23:13+09:00</dc:date>
    <utime>1300620193</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/85.html">
    <title>rails</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/85.html</link>
    <description>
          </description>
    <dc:date>2010-01-30T03:55:44+09:00</dc:date>
    <utime>1264791344</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/86.html">
    <title>Tritonn</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/86.html</link>
    <description>
      * Tritonn って?
[[ritonnとは&gt;&gt;http://qwik.jp/tritonn/about.html]]
 TritonnはMySQLから全文検索エンジンSennaを利用可能にするための改造を行うプロジェクトです。

Tritonn patch (tritonn-1.0.2)を最後に、mysqlのパッチとして提供するのをやめ、パッチが当たったmysqlを配布している模様。

[[sennaとは&gt;&gt;http://word.smilevision.jp/wikipedia/detail/title/Senna/]]
 Senna（せな、Senna: An Embeddable Fulltext Search Engine）は、未来検索ブラジルによって開発されているオープンソースの全文検索エンジンである。読みは「せな」であり、「せんな」ではない。検索速度が高速なことから、「音速の貴公子」と呼ばれたアイルトン・セナにちなんで名づけられた。
 MeCabによる形態素解析の結果を用いた単語ベースのインデックスと、N-gramによるトークン抽出を用いたインデックスの両方を作成することができる。

* インストール
 環境; ubuntu 9.10

** senna, mecab
senna, mecabはこのページのとおりに行えば得に問題はない。
http://qwik.jp/tritonn/howtobuild.html

** Tritonn
Tritonnに関してはmysqlの公式バイナリのオプションを指定してやらないとubuntuの場合、あとあと不具合の原因になるみたい
http://d.hatena.ne.jp/makura_a/20091021

*** 注意すべきオプション
ubuntu配布のmysql-client(/etc/mysql/my.cnf)のデフォルトの設定でmysqldのソケットファイルが/var/run/mysqld/mysqld.sockに設定されているので、Tritionnのconfigure時に以下のオプションを指定しておく
 --with-unix-socket-path=/var/run/mysqld/mysqld.sock
[[参考&gt;&gt;http://d.hatena.ne.jp/tasukuchan/20060324/1143181186]]



* インストール後の確認 

mysqlに接続してTritonn Projectの文字が出力されてればOK
 $ mysql -u root
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 1
 Server version: 5.0.45-modified MySQL Community Server (GPL) (portions (c) Tritonn Project)

** 動作確認

*** InnoDBとMyISAMの変換
[[初めてのTritonn(チュートリアル)&gt;&gt;http://qwik.jp/tritonn/basictutorial.html]]
 ALTER TABLE projects TYPE=&quot;MyISAM&quot;;


でいける。逆は
 ALTER TABLE projects TYPE=&quot;InnoDB&quot;;


*** FULLTEXT INDEX
 ALTER TABLE projects ADD FULLTEXT INDEX index_description USING MECAB (description);
 SHOW INDEX FROM projects;
 ALTER TABLE projects DROP INDEX index_description;


または

 &#039;CREATE FULLTEXT INDEX index_description ON projects index_description USING MECAB (description);&#039; (未確認)
 SHOW INDEX FROM projects;
 ALTER TABLE projects DROP INDEX index_description;

で実施するMigrationを記述。[[br]]
＊USING MECABを省略するとインデックス付け方法がNGRAM（デフォルト値）になるので注意。[[br]]
Ver. 1.0.7以降、デフォルトのFULLTEXTインデックスがNGRAM方式に変更。 USING句がUSING SENNAからUSING MECABに変更。
http://d.hatena.ne.jp/mir/20071020/p1

alter table の後であれば、indexが再構築され、alter table以前のデータに関してもmacthさせることが可能。

クエリーに使用されているインデクスを参照する方法
 INSERT INTO projects (description) VALUES(&quot;明日の天気は晴れです。&quot;);
 CREATE FULLTEXT INDEX index_description ON projects index_description (description);
 ALTER TABLE projects ADD FULLTEXT INDEX index_description USING MECAB (description);
 SELECT id, description FROM projects WHERE MATCH(description) AGAINST(&quot;晴れ&quot;);
 =&gt;
 +----+--------------------------------------+
 | id | description                        |
 +----+--------------------------------------+
 |  3 | 明日の天気は晴れです。 | 
 +----+--------------------------------------+
 1 row in set (0.00 sec)
 

** インデクス生成時のオプション 
[http://qwik.jp/tritonn/reference.html リファレンスマニュアル]

*** NO NORMALIZE 
n-gram でインデクスを生成する場合に正規化（今日=&gt;キョウ、キョー）をしない設定。

*** SECTIONALIZE 
[http://d.hatena.ne.jp/mir/20070619/p1 マルチセクション機能] [[br]]
一つのtable中に複数のfulltext indexを作成する場合のオプション

*** NITIAL_N_SEGMENTS
mysqlがqueryを実行する時にバッファとして確保されるメモリの量。
 INITIAL_N_SEGMENTS 数値のように数値を指定すると、
 数値 * 256KBのサイズが確保されるようになります。
 FULLTEXT INDEX USING SENNA, 2048 (text)　なら　512MB

と同時に、
tablename.SEN.iファイル（多分インデクスファイル）がほぼ同量確保される（上記の例だと512MB）

インデクスファイルのデータサイズが増えると、その分のメモリが確保されるのか
メモリを何回もバッファするのかは不明。。（検証必要、　多分後者）

[http://blog.yappo.jp/yappo/archives/cat_searchdev.html ここの]2005年11月26日と2005年11月27日参照

** DB変数の設定

*** 2ind(安定度合いとしてはβ段階)
MySQLが全文検索用のインデックスと通常のインデックスの両方を併用できるようにする機能

* Railsで使う 
[http://d.hatena.ne.jp/ryu00026/20071209/1197209405 acts_as_tritonn]

** migration

- InnoDBをMyISAMに変更
- projects, meeting, topicsテーブルにindexを付ける 

ファイル名 027_add_fulltext_index.rb
  class AddFulltextIndex &lt; ActiveRecord::Migration
   def self.up
     # ALTER TABLE table_name TYPE = (MyISAM | InnoDB)
     alter_table_type(:users)
     alter_table_type(:projects)
     alter_table_type(:meetings)
     alter_table_type(:topics)
     # 全文検索用インデックス作成
     # CREATE FULLTEXT INDEX `pages_url_index` USING NGRAM ON pages(url(32));
     # ALTER TABLE tbl1 ADD FULLTEXT INDEX ft USING NGRAM (text);
     #remove_index(:projects, [:title])
     add_text_index(:projects, [:title])
     add_text_index(:projects, [:description])
     add_text_index(:projects, [:title, :description])
     add_text_index(:meetings, [:title])
     add_text_index(:meetings, [:description])
     add_text_index(:meetings, [:title, :description])
     add_text_index(:topics, [:title])
     add_text_index(:topics, [:content])
     add_text_index(:topics, [:title, :content])
   end
 
   def self.down
     remove_index(:projects, [:title])
     remove_index(:projects, [:description])
     remove_index(:meetings, [:title])
     remove_index(:meetings, [:description])
     remove_index(:topics, [:title])
     remove_index(:topics, [:content])
     alter_table_type(:users, &quot;InnoDB&quot;)
     alter_table_type(:projects, &quot;InnoDB&quot;)
     alter_table_type(:meetings, &quot;InnoDB&quot;)
     alter_table_type(:topics, &quot;InnoDB&quot;)
   end 
 
   private
   def self.add_text_index(table_name, column_name, options = {})
     column_names = Array(column_name)
     index_name   = index_name(table_name, :column =&gt; column_names)  
 
     if Hash === options # legacy support, since this param was a string
       index_name = options[:name] || index_name
     else
       index_type = options
     end
     quoted_column_names = column_names.map { |e| quote_column_name(e) }.join(&quot;, &quot;)
     execute &quot;ALTER TABLE #{quote_table_name(table_name)} ADD FULLTEXT INDEX      #{quote_column_name(index_name)} USING MECAB (#{quoted_column_names})&quot; 
   end
   def self.alter_table_type(table_name, table_type=&quot;MyISAM&quot;)
     execute &quot;ALTER TABLE #{table_name} TYPE = #{table_type}&quot;
   end
  end


* リンク = 
[[Tritonn&gt;&gt;http://qwik.jp/tritonn/]]ページ内のリンク=&gt;インストール、チュートリアル

[[プレゼン資料&gt;&gt;http://www.scs.co.jp/mysql/docs/mysql_usersconference2007.pdf]]=&gt;プレゼンの最後に「インストール後にテストするように」･･･テスト方法もある    </description>
    <dc:date>2010-01-25T09:55:58+09:00</dc:date>
    <utime>1264380958</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/108.html">
    <title>Ruby実行環境まとめ</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/108.html</link>
    <description>
          </description>
    <dc:date>2010-01-17T09:20:18+09:00</dc:date>
    <utime>1263687618</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/2.html</link>
    <description>
          </description>
    <dc:date>2010-01-17T07:28:49+09:00</dc:date>
    <utime>1263680929</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/107.html">
    <title>ストリートスナップmixiアプリ</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/107.html</link>
    <description>
          </description>
    <dc:date>2009-11-24T22:59:55+09:00</dc:date>
    <utime>1259071195</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/104.html">
    <title>Max MSP Jitter</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/104.html</link>
    <description>
          </description>
    <dc:date>2009-11-18T06:55:25+09:00</dc:date>
    <utime>1258494925</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/suzukimilanpaak/pages/106.html">
    <title>Windows Vista</title>
    <link>https://w.atwiki.jp/suzukimilanpaak/pages/106.html</link>
    <description>
          </description>
    <dc:date>2009-11-18T05:10:53+09:00</dc:date>
    <utime>1258488653</utime>
  </item>
  </rdf:RDF>
