<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>株式会社ロンウイット</title>
	<atom:link href="http://www.rondhuit.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.rondhuit.com</link>
	<description>ロンウイットはオープンソースのLucene/Solrを使った高速・高性能・大規模・企業向け検索エンジンをお客様にご提供する会社です.</description>
	<lastBuildDate>Sun, 13 May 2012 14:50:38 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Solrサブスクリプションリリース0.9.0のお知らせ</title>
		<link>http://www.rondhuit.com/solr%e3%82%b5%e3%83%96%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b90-9-0%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b.html</link>
		<comments>http://www.rondhuit.com/solr%e3%82%b5%e3%83%96%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b90-9-0%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b.html#comments</comments>
		<pubDate>Wed, 02 May 2012 01:34:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ニュース]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1546</guid>
		<description><![CDATA[お客様各位 平素はお引き立てを賜り、ありがとうございます。 Solrプラグイン0.9.0をリリースしましたのでお知らせいたします。 本リリースではこれまでお客様から多くのご要望をちょうだいしておりました、日本語の 「もし &#8230;]]></description>
			<content:encoded><![CDATA[お客様各位<br/><br/>

平素はお引き立てを賜り、ありがとうございます。<br/><br/>

Solrプラグイン0.9.0をリリースしましたのでお知らせいたします。

<br/><br/>

本リリースではこれまでお客様から多くのご要望をちょうだいしておりました、日本語の
「もしかして検索」に対応いたしました。以下に詳しい使い方の説明がございますので、
この機会にぜひ本機能をご活用ください：<br/><br/>

<a  href="http://www.rondhuit.com/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%80%8C%E3%82%82%E3%81%97%E3%81%8B%E3%81%97%E3%81%A6%E3%80%8D%E6%A4%9C%E7%B4%A2%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html" target="_blank">http://www.rondhuit.com/日本語「もしかして」検索について.html</a>

<br/><br/>
また、本リリースではWebクローラーのHeritrix関連機能をdeprecatedとさせていただきました。
今後はApache ManifoldCFのご利用をご検討ください。


<br/><br/>
今後ともよろしくお願い申し上げます。]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/solr%e3%82%b5%e3%83%96%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b90-9-0%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[プレスリリース] パートな湿布？いいえ、パートナーシップでした 。〜もしかして検索が可能なSolrサブスクリプションの新版を発表</title>
		<link>http://www.rondhuit.com/%e3%82%82%e3%81%97%e3%81%8b%e3%81%97%e3%81%a6%e6%a4%9c%e7%b4%a2.html</link>
		<comments>http://www.rondhuit.com/%e3%82%82%e3%81%97%e3%81%8b%e3%81%97%e3%81%a6%e6%a4%9c%e7%b4%a2.html#comments</comments>
		<pubDate>Mon, 30 Apr 2012 07:33:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ニュース]]></category>
		<category><![CDATA[プレスリリース]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1513</guid>
		<description><![CDATA[株式会社ロンウイット（本社：東京都千代田区、代表取締役社長：関口宏司）はオープンソース・ソフトウェアの検索エンジンApache Solr（アパッチ ソーラー）のサブスクリプションに、新機能を追加した最新版の提供を開始しま &#8230;]]></description>
			<content:encoded><![CDATA[<p>
株式会社ロンウイット（本社：東京都千代田区、代表取締役社長：関口宏司）はオープンソース・ソフトウェアの検索エンジンApache Solr（アパッチ ソーラー）のサブスクリプションに、新機能を追加した最新版の提供を開始しました。 
</p>

<p>
最新版ではユーザーの誤った検索入力に対して「もしかして○○」と正しいキーワード候補を表示する「もしかして検索機能」（以下、「もしかして」）に対応しました。
</p>

<p>
「もしかして」で表示するキーワード候補にはもととなるデータソースが必要ですが、通常は検索に使用している本体のインデックスデータを用いれば適切に動作します。
</p>

<p>
以下はサブスクリプションに含まれるデモデータ（歴代の内閣総理大臣の所信表明演説のテキストデータ）をデータソースにしたときに、誤ったユーザー入力と「もしかして」で表示されるキーワード候補の対応を一覧表にしたものです。
<table>
<tr>
<th>入力ミスの例</th><th>「もしかして」で出力される例</th>
</tr>
<tr>
<td>パートな湿布</td><td>パートナーシップ</td>
</tr>
<tr>
<td>階段世代</td><td>団塊世代</td>
</tr>
<tr>
<td>笑止高齢化</td><td>少子高齢化</td>
</tr>
<tr>
<td>いんたーねっｔ</td><td>インターネット</td>
</tr>
<tr>
<td>しゃ皆保険</td><td>社会保険</td>
</tr>
<tr>
<td>滑稽銀</td><td>国会議員</td>
</tr>
<tr>
<td>滅入るマガジン</td><td>メールマガジン</td>
</tr>
</table>
</p>

<br/>
<h5>サブスクリプションのその他の機能</h5>
<p>
サブスクリプションでは従来より、IMEを介したローマ字日本語入力にリアルタイムに対応した検索語サジェスチョン機能や、パーソナライズ検索、および「慶應大学」<=>「慶応大学」の新旧漢字相互検索や「いすゞ自動車」<=>「いすず自動車」などの踊り字対応検索など、日本語に独特な表記揺れに強い検索機能も提供しています。
</p>

<br/>
<h5>参考記事</h5>
<p>
「もしかして」機能について詳しくは、以下の記事をご覧ください：<br/>
<a href="http://www.rondhuit.com/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%80%8C%E3%82%82%E3%81%97%E3%81%8B%E3%81%97%E3%81%A6%E3%80%8D%E6%A4%9C%E7%B4%A2%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html">日本語「もしかして」検索について</a><br/><br/>

サブスクリプションのその他の機能については、以下のJavadocをご覧ください：<br/>
<a href="http://www.rondhuit-demo.com/RCSS/api/overview-summary.html">Solrサブスクリプション・パッケージのJavadoc</a><br/><br/>
</p>

<br/>
<h5>Apache Solrについて</h5>
<p>オープンソース・ソフトウェアを開発・管理する非営利団体Apache Software Foundationが開発しているOSSの検索エンジンです。SolrはHadoopの創始者であるDoug Cutting氏が開発したApache Luceneをベースにしています。<br/>
<a href="http://lucene.apache.org/solr/" title="Apache Solr" target="_blank">http://lucene.apache.org/solr/</a>
</p>

<br/>
<h5>株式会社ロンウイットについて</h5>
<p>Apache Lucene/Solrを企業・学校等に導入する支援事業を展開しています。Solrの導入時コンサルティングの他、Solrの教育サービスやサポートサービスなども提供しています。また、Solrのクエリログを可視化する無料のサービス<a href="http://soleami.com/ja">soleami（ソレミ）</a>も提供しています。代表の関口はApache Lucene/Solrのコミッターも務めています。<br/>
<a href="http://www.rondhuit.com/" title="株式会社ロンウイット" target="_blank">http://www.rondhuit.com/</a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/%e3%82%82%e3%81%97%e3%81%8b%e3%81%97%e3%81%a6%e6%a4%9c%e7%b4%a2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>日本語「もしかして」検索について</title>
		<link>http://www.rondhuit.com/%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%80%8c%e3%82%82%e3%81%97%e3%81%8b%e3%81%97%e3%81%a6%e3%80%8d%e6%a4%9c%e7%b4%a2%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6.html</link>
		<comments>http://www.rondhuit.com/%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%80%8c%e3%82%82%e3%81%97%e3%81%8b%e3%81%97%e3%81%a6%e3%80%8d%e6%a4%9c%e7%b4%a2%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6.html#comments</comments>
		<pubDate>Mon, 30 Apr 2012 06:47:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[サブスクリプション]]></category>
		<category><![CDATA[テクノロジ]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1465</guid>
		<description><![CDATA[ロンウイットのSolrサブスクリプション・パッケージはバージョン0.9から、お客様からご要望の多かった日本語の「もしかして検索」に対応しました。本記事ではその新機能を詳しく紹介します。 「もしかして検索」とは？ もしかし &#8230;]]></description>
			<content:encoded><![CDATA[ロンウイットのSolrサブスクリプション・パッケージはバージョン0.9から、お客様からご要望の多かった日本語の「もしかして検索」に対応しました。本記事ではその新機能を詳しく紹介します。

<h3>「もしかして検索」とは？</h3>
もしかして検索は、GoogleやYahoo!の検索窓に、間違った（と思われる）検索語を入力したとき、以下の画面例のように「もしかして○○」（Googleの場合）あるいは「○○ではありませんか？」（Yahoo!の場合）という文言を検索結果ページに表示する機能です。

<div id="attachment_1472" class="wp-caption alignnone" style="width: 490px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/google-did-you-mean-480x127.png" alt="" title="Googleの「もしかして」" width="480" height="127" class="size-medium wp-image-1472" /><p class="wp-caption-text">Googleによる「もしかして○○」</p></div>
<br/>

<div id="attachment_1475" class="wp-caption alignnone" style="width: 490px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/yahoo-did-you-mean-480x112.png" alt="" title="Yahoo!の「もしかして」" width="480" height="112" class="size-medium wp-image-1475" /><p class="wp-caption-text">Yahoo!による「○○ではありませんか？」</p></div>
<br/>

「○○」の部分にはその間違った検索語を訂正した正しい（と思われる）検索語がアンカーリンクで表示されます。そのため、もし訂正された検索語が正しかった場合、ユーザーは検索語を再入力することなく、リンクをクリックするだけで再検索できるようになります。「もしかして検索」は、ユーザーの省力化に大きく貢献する、大変優れた効果的な検索機能といえるでしょう。<br/><br/>

GoogleやYahoo!で検索に親しんだお客様からは、Solrを使って運営するECサイトや企業内検索システムでも同様の機能を提供したいというご要望を多数いただいておりましたが、今回のリリースで本機能をご利用いただけるようになりました。<br/><br/>

<h3>まずは使ってみる</h3>
ロンウイットのSolrサブスクリプション・パッケージ（以下、サブスクリプションと記す）は、インストール後すぐにいろいろな機能を試せるように、日本語のサンプルデータといくつかの目的別に設定された環境（solrconfig.xmlやschema.xmlなどの設定ファイル）が付属しています。日本語のサンプルデータとしては、歴代の内閣総理大臣の所信表明演説が付属していますので、ここではそのデータをそのまま使ってみます。また環境は、シングルコア構成のbasic環境を使います（マルチコア構成でももちろん使えますが、説明の中ではシングルコア構成のURLを示します）。<br/><br/>

ではさっそく「もしかして検索」を試してみましょう。サンプルデータを登録してあるbasic環境を起動したら、Webブラウザから次のURLにアクセスしてください：

<pre>

http://localhost:8080/solr/spell?q=笑止高齢化&#038;spellcheck=true&#038;spellcheck.build=true

</pre>


<br/>

通常の検索と同様、qパラメータに検索語を指定します。ここでは「笑止高齢化」という検索を行いました。もちろん、「少子高齢化」が正しいキーワードであり、「笑止高齢化」というキーワードはないので、ヒット件数は0件となります。ただし、Solrは次のように「少子高齢化」という正しいキーワード候補をXMLで返してくれます：

<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;response&gt;
  &lt;lst name=&quot;responseHeader&quot;&gt;
    &lt;int name=&quot;status&quot;&gt;0&lt;/int&gt;
    &lt;int name=&quot;QTime&quot;&gt;105&lt;/int&gt;
  &lt;/lst&gt;
  &lt;str name=&quot;command&quot;&gt;build&lt;/str&gt;
  &lt;result name=&quot;response&quot; numFound=&quot;0&quot; start=&quot;0&quot;/&gt;
  &lt;lst name=&quot;spellcheck&quot;&gt;
    &lt;lst name=&quot;suggestions&quot;&gt;
      &lt;lst name=&quot;笑止高齢化&quot;&gt;
        &lt;int name=&quot;numFound&quot;&gt;1&lt;/int&gt;
        &lt;int name=&quot;startOffset&quot;&gt;0&lt;/int&gt;
        &lt;int name=&quot;endOffset&quot;&gt;5&lt;/int&gt;
        &lt;arr name=&quot;suggestion&quot;&gt;
          &lt;str&gt;少子高齢化&lt;/str&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
    &lt;/lst&gt;
  &lt;/lst&gt;
&lt;/response&gt;
</pre>


<br/>

なお、日本語のもしかして検索は、Solrのスペルチェック機能を応用していますので、もしかして検索を発動させるときは、spellcheck=trueというパラメータを指定します。また「もしかして」の結果は上記のように&#8221;spellcheck&#8221;のパートに表示されます。これ以降の出力例では、&#8221;spellcheck&#8221;部分のみを表示し、ヘッダ部分など他の部分は省略します。<br/><br/>

他の検索語でも試してみましょう。たとえば、「インターネット」の誤りである「いんたーねっｔ」（IMEを使ったローマ字日本語入力で、最後の&#8221;o&#8221;を入力せずに検索ボタンをクリックしてしまった例）を検索してみると：

<pre>

http://localhost:8080/solr/spell?q=いんたーねっｔ&#038;spellcheck=true

</pre>


<br/>

次のように期待通り「インターネット」が訂正候補として返されます：

<pre>
&lt;lst name=&quot;spellcheck&quot;&gt;
  &lt;lst name=&quot;suggestions&quot;&gt;
    &lt;lst name=&quot;いんたーねっｔ&quot;&gt;
      &lt;int name=&quot;numFound&quot;&gt;1&lt;/int&gt;
      &lt;int name=&quot;startOffset&quot;&gt;0&lt;/int&gt;
      &lt;int name=&quot;endOffset&quot;&gt;7&lt;/int&gt;
      &lt;arr name=&quot;suggestion&quot;&gt;
        &lt;str&gt;インターネット&lt;/str&gt;
      &lt;/arr&gt;
    &lt;/lst&gt;
  &lt;/lst&gt;
&lt;/lst&gt;
</pre>


<br/>

さらに他のキーワードでも試してみましょう。たとえば、2つのキーワードを使った検索「滅入るマガジン 位置べー同名」ではいかがでしょうか：

<pre>
http://localhost:8080/solr/spell?q=滅入るマガジン 位置べー同名&#038;spellcheck=true
</pre>


<br/>

2つのキーワードとも正しく入力できていない例ですが、果たしてSolrは次のように2つのキーワード（順に「メールマガジン」「日米同盟」が正解）とも訂正してくれました：

<pre>
&lt;lst name=&quot;spellcheck&quot;&gt;
  &lt;lst name=&quot;suggestions&quot;&gt;
    &lt;lst name=&quot;滅入るマガジン&quot;&gt;
      &lt;int name=&quot;numFound&quot;&gt;1&lt;/int&gt;
      &lt;int name=&quot;startOffset&quot;&gt;0&lt;/int&gt;
      &lt;int name=&quot;endOffset&quot;&gt;7&lt;/int&gt;
      &lt;arr name=&quot;suggestion&quot;&gt;
        &lt;str&gt;メールマガジン&lt;/str&gt;
      &lt;/arr&gt;
    &lt;/lst&gt;
    &lt;lst name=&quot;位置べー同名&quot;&gt;
      &lt;int name=&quot;numFound&quot;&gt;1&lt;/int&gt;
      &lt;int name=&quot;startOffset&quot;&gt;8&lt;/int&gt;
      &lt;int name=&quot;endOffset&quot;&gt;14&lt;/int&gt;
      &lt;arr name=&quot;suggestion&quot;&gt;
        &lt;str&gt;日米同盟&lt;/str&gt;
      &lt;/arr&gt;
    &lt;/lst&gt;
  &lt;/lst&gt;
&lt;/lst&gt;
</pre>


<br/>

2つ（以上）のキーワードを一度に訂正した全体の結果が欲しい場合、次のようにspellcheck.collate=trueというパラメータを使うと便利です：

<pre>
http://localhost:8080/solr/spell?q=滅入るマガジン 位置べー同名&#038;spellcheck=true&#038;spellcheck.collate=true
</pre>


<br/>

すると、次のようにcollationというパートに「メールマガジン 日米同盟」という訂正後のキーワード全体が返され、クライアントは非常に楽に処理ができます：

<pre>
&lt;lst name=&quot;spellcheck&quot;&gt;
  &lt;lst name=&quot;suggestions&quot;&gt;
    &lt;lst name=&quot;滅入るマガジン&quot;&gt;
      &lt;int name=&quot;numFound&quot;&gt;1&lt;/int&gt;
      &lt;int name=&quot;startOffset&quot;&gt;0&lt;/int&gt;
      &lt;int name=&quot;endOffset&quot;&gt;7&lt;/int&gt;
      &lt;arr name=&quot;suggestion&quot;&gt;
        &lt;str&gt;メールマガジン&lt;/str&gt;
      &lt;/arr&gt;
    &lt;/lst&gt;
    &lt;lst name=&quot;位置べー同名&quot;&gt;
      &lt;int name=&quot;numFound&quot;&gt;1&lt;/int&gt;
      &lt;int name=&quot;startOffset&quot;&gt;8&lt;/int&gt;
      &lt;int name=&quot;endOffset&quot;&gt;14&lt;/int&gt;
      &lt;arr name=&quot;suggestion&quot;&gt;
        &lt;str&gt;日米同盟&lt;/str&gt;
      &lt;/arr&gt;
    &lt;/lst&gt;
    &lt;str name=&quot;collation&quot;&gt;メールマガジン 日米同盟&lt;/str&gt;
  &lt;/lst&gt;
&lt;/lst&gt;
</pre>


<br/>

<h4>もしかして検索のしくみ〜スペルチェック辞書の作成と利用</h4>
もしかして検索を実行するには、あらかじめ「スペルチェック辞書」を作成しておく必要があります。スペルチェック辞書は、「正解のキーワード」リストから生成したLuceneのインデックスです。正解のキーワードリストというのは、上記の例でいうと「少子高齢化」「インターネット」「メールマガジン」「日米同盟」などの訂正候補として表示されるキーワードのリストです。<br/>
<br/>

正解のキーワードリストは下図のように、既存のSolrのインデックスから作成する（下図①）ことも、別途用意したテキストファイルから作成する（下図②）こともできます。上記の例では、サブスクリプションに付属している歴代の内閣総理大臣の所信表明演説のテキストデータを登録したSolrのインデックスから作成しました（下図①の方法）：

<div id="attachment_1489" class="wp-caption alignnone" style="width: 309px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/did-you-mean-architecture.png" alt="" title="もしかして検索のスペルチェック辞書" width="299" height="288" class="size-full wp-image-1489" /><p class="wp-caption-text">もしかして検索のしくみとスペルチェック辞書</p></div>
<br/>

スペルチェック辞書を作成するには、最初の検索リクエスト時に、spellcheck.build=trueというパラメータを指定します（上記の例でも最初の検索リクエストのみにspellcheck.build=trueパラメータを指定しています）。<br/><br/>

spellcheck.build=trueパラメータは、スペルチェック辞書を新たに作成するときのみ指定するようにしてください（検索リクエストのたびに毎回指定しないように注意してください）。正解のキーワードリストをSolrのインデックスから作成する場合は、newSearcherイベント実行時にspellcheck.build=trueを指定するとよいでしょう。一度スペルチェック辞書を作成してしまえば、それ以降の検索リクエストは既存のスペルチェック辞書を利用してもしかして検索機能が実行できるようになります。

<h3>solrconfig.xmlの設定</h3>
ここでは、日本語もしかして検索に必要なsolrconfig.xmlの設定について詳しく見ていきましょう。主要な設定は、サーチコンポーネントとリクエストハンドラの2つです。

<h4>サーチコンポーネント</h4>
まずは、サーチコンポーネントを見てみます：

<pre>
&lt;searchComponent name=&quot;spellcheck&quot; class=&quot;solr.SpellCheckComponent&quot;&gt;
  &lt;str name=&quot;queryAnalyzerFieldType&quot;&gt;text_ws&lt;/str&gt;
  &lt;lst name=&quot;spellchecker&quot;&gt;
    &lt;str name=&quot;classname&quot;&gt;com.rondhuit.solr.spell.IndexBasedSpellChecker&lt;/str&gt;
    &lt;str name=&quot;name&quot;&gt;default&lt;/str&gt;
    &lt;str name=&quot;field&quot;&gt;statement_buzz&lt;/str&gt;
    &lt;str name=&quot;fieldType&quot;&gt;text_ws&lt;/str&gt;
    &lt;str name=&quot;spellcheckIndexDir&quot;&gt;spellchecker&lt;/str&gt;
    &lt;str name=&quot;wordAnalyzerFieldType&quot;&gt;text_ja_spell&lt;/str&gt;
  &lt;/lst&gt;
&lt;/searchComponent&gt;
</pre>


<br/>

SpellCheckComponentにspellcheckという名前をつけてサーチコンポーネントを定義しています。その内部ではまず、queryAnalyzerFieldTypeという指定があります。queryAnalyzerFieldTypeには、クエリーコンバーターで使用されるAnalyzerのフィールド型を指定します。クエリーコンバーターとは、qパラメータに指定された検索キーワードをトークンのリストに変換するためのクラスで、その内部ではクエリパーサーではなくAnalyzerを用いています。queryAnalyzerFieldTypeにはそこで使われるAnalyzerの元になるフィールド型を指定しますが、省略した場合はLuceneのWhitespaceAnalyzerが使われます。クエリーコンバーターはsolrconfig.xmlで指定できますが、指定しなかった場合はデフォルトのSpellingQueryConverterが使われます。<br/>
<br/>

サーチコンポーネントのspellcheckerの中で設定する項目は、classnameで指定された各クラスにより異なります。ロンウイットのサブスクリプションでは、前述の正解のキーワードリストを既存のSolrのインデックスから作成する場合に使用するIndexBasedSpellCheckerと、別途用意したテキストファイルから作成する場合に使用するFileBasedSpellCheckerを提供しています。下表にそれぞれのクラスについて設定項目を示します：

<table>
<tr>
<td>パラメータ</td><td>IndexBased<br/>SpellChecker</td><td>FileBased<br/>SpellChecker</td>
</tr>
<tr>
<td>name</td><td colspan="2">複数のスペルチェック設定を行った場合、nameを指定してその設定に名前をつけます。nameを指定しなかったときはdefaultという名前になります。</td>
</tr>
<tr>
<td>field</td><td colspan="2">spellcheck.qパラメータで指定されたクエリをパースしてトークンリストを取得するときに使われるAnalyzerのもととなるフィールド名を指定します。また、IndexBasedSpellCheckerにおいてはキーワード候補を選択するフィールドの指定にもなります。</td>
</tr>
<tr>
<td>fieldType</td><td colspan="2">上記のfieldを上書きします。また、FileBasedSpellCheckerにおいてはテキストファイルの正解のキーワードをスペルチェック辞書に登録する際のAnalyzerとして機能します。</td>
</tr>
<tr>
<td>spellcheckIndexDir</td><td colspan="2">スペルチェック辞書のインデックスのディレクトリ名を指定します。</td>
</tr>
<tr>
<td>wordAnalyzerFieldType</td><td colspan="2">サブスクリプションでもしかして検索を行う場合は必ずtext_ja_spellと指定し、schema.xmlにそのフィールド型が設定されている必要があります。</td>
</tr>
<tr>
<td>sourceLocation</td><td>Luceneなど他のアプリケーションで作成したインデックスの場合はそのインデックスの絶対パスを指定します。Solrのインデックスを使う場合は指定しません。</td><td>confディレクトリに配置した正解のキーワードリストを記したテキストファイルのファイル名を指定します。</td>
</tr>
<tr>
<td>comparatorClass</td><td colspan="2">Comparator&lt;SuggestWord&gt;を実装したコンパレータクラス名、または&#8221;score&#8221;か&#8221;freq&#8221;と指定します。デフォルトはscoreで、もしかしてで表示される候補の選択をスコアの高いもので行います。freqと指定すると、インデックス内での登場回数の多いキーワードが候補として選択されます。それ以外の基準で選びたいときは、独自クラスを実装できるようになっています。</td>
</tr>
<tr>
<td>thresholdTokenFrequency</td><td>もしかしてで表示されるキーワードを候補として選択するかどうか、インデックス内での最低頻度の割合で指定します。デフォルトは0で、すべてのキーワードを訂正候補として選択します。0.3と指定すると、30%以上の文書に使われるキーワードのみを訂正候補として選択します。</td><td>（無視）</td>
</tr>
<tr>
<td>characterEncoding</td><td>（無視）</td><td>正解のキーワードリストを記載したファイルの文字コードを指定します。</td>
</tr>
</table>

<h4>リクエストハンドラ</h4>
次にリクエストハンドラサーチの定義を見てみます：

<pre>
&lt;requestHandler name=&quot;/spell&quot; class=&quot;solr.SearchHandler&quot; startup=&quot;lazy&quot;&gt;
  &lt;lst name=&quot;defaults&quot;&gt;
    &lt;str name=&quot;df&quot;&gt;statement&lt;/str&gt;
    &lt;str name=&quot;spellcheck.onlyMorePopular&quot;&gt;false&lt;/str&gt;
    &lt;str name=&quot;spellcheck.extendedResults&quot;&gt;false&lt;/str&gt;
    &lt;str name=&quot;spellcheck.count&quot;&gt;1&lt;/str&gt;
  &lt;/lst&gt;
  &lt;arr name=&quot;last-components&quot;&gt;
    &lt;str&gt;spellcheck&lt;/str&gt;
  &lt;/arr&gt;
&lt;/requestHandler&gt;
</pre>


<br/>

ここで重要なのは、last-componentsで前述のサーチコンポーネントであるspellcheckを指定していることです。これにより、通常の検索に追加してもしかして検索を実行するようになっています。
<br/><br/>

リクエストハンドラの設定のその他の部分は、通常の検索で指定しているものと同じです。もしかして検索固有の&#8221;spellcheck.&#8221;で始まるパラメータについては、以下で説明します。

<h3>リクエストパラメータ</h3>
もしかして検索固有の&#8221;spellcheck.&#8221;で始まるパラメータについて、下表で説明します:

<table>
<tr>
<td>パラメータ</td><td>説明</td>
</tr>
<tr>
<td>spellcheck</td><td>もしかして検索を行う場合はtrue、行わない場合はfalseを指定します。</td>
</tr>
<tr>
<td>spellcheck.q</td><td>もしかして検索を行う検索キーワードを指定します。指定しなかった場合、qパラメータが参照されます。qパラメータの場合は、クエリ文字列から訂正候補のキーワードを取り出すためにクエリコンバーターが使われるのに対し、spellcheck.qパラメータの場合は、field/fieldTypeのAnalyzerが使われるという違いがあります。</td>
</tr>
<tr>
<td>spellcheck.build</td><td>スペルチェック辞書を作成する場合にこのパラメータにtrueを指定してもしかして検索を実行します。</td>
</tr>
<tr>
<td>spellcheck.reload</td><td>スペルチェック辞書を再ロードします。</td>
</tr>
<tr>
<td>spellcheck.dictionary</td><td>solrconfig.xmlの中でnameを使って複数のスペルチェックを設定し分けているとき、その名前をこのパラメータで指定します。</td>
</tr>
<tr>
<td>spellcheck.count</td><td>正解のキーワード候補を最大いくつ返してもらいたいかを指定します。デフォルトは1です。</td>
</tr>
<tr>
<td>spellcheck.onlyMorePopular</td><td>trueに設定すると、検索キーワードよりも多く検索本体のインデックスに登録されているキーワードを訂正候補として提示します（検索キーワードが正解の場合であっても）。デフォルトはfalseです。</td>
</tr>
<tr>
<td>spellcheck.extendedResults</td><td>trueに設定するとより詳細な情報を返すようになります。</td>
</tr>
<tr>
<td>spellcheck.collate</td><td>trueに設定すると複数の検索キーワードからなるクエリをまとめて訂正後のクエリ文字列にして提示してくれます。</td>
</tr>
<tr>
<td>spellcheck.maxCollations</td><td>collationで返す最大数を指定します。spellcheck.collate=trueのときのみ有効で、デフォルトは1です。</td>
</tr>
<tr>
<td>spellcheck.maxCollationTries</td><td>collationで返す訂正候補のキーワードを探す際、このパラメータの数を最大のトライ回数とします。spellcheck.collate=trueのときのみ有効で、デフォルトは0です。</td>
</tr>
<tr>
<td>spellcheck.maxCollationEvaluations</td><td>同じくcollationで返す訂正候補のキーワードを探す際の組み合わせを試す最大回数です。たくさんのスペルミスを犯すユーザーのためのセーフティネットであり、デフォルトの10000は多くの場合で適当な数値です。</td>
</tr>
<tr>
<td>spellcheck.collateExtendedResults</td><td>spellcheck.collate=trueのときのみ有効で、collationの出力にさらに詳細な情報を付加させることができます。</td>
</tr>
</table>

<h3>もしかして検索結果のクライアント側の取り扱いについて</h3>
Solrに対してもしかして検索を実行したクライアントは、以下のようなもしかして検索の結果を含んだXMLを受信します：

<pre>
&lt;lst name=&quot;spellcheck&quot;&gt;
  &lt;lst name=&quot;suggestions&quot;&gt;
    &lt;lst name=&quot;今無いｎ精度かいかく&quot;&gt;
      &lt;int name=&quot;numFound&quot;&gt;1&lt;/int&gt;
      &lt;int name=&quot;startOffset&quot;&gt;0&lt;/int&gt;
      &lt;int name=&quot;endOffset&quot;&gt;10&lt;/int&gt;
      &lt;arr name=&quot;suggestion&quot;&gt;
        &lt;str&gt;公務員制度改革&lt;/str&gt;
      &lt;/arr&gt;
    &lt;/lst&gt;
    &lt;str name=&quot;collation&quot;&gt;公務員制度改革&lt;/str&gt;
  &lt;/lst&gt;
&lt;/lst&gt;
</pre>


<br/>

このSolrクライアントプログラムはこのXMLをHTMLに変換してユーザーのブラウザに表示するわけですが、「もしかして○○」と表示するかどうかは適当な基準を設けてアプリケーションごとに決めておく必要があります。たとえば、numFoundが0の場合や10件以下の場合、などとします。もしかしてで提示されるキーワードはあくまでも候補で、ユーザーのクエリが絶対間違っているという訳ではありません。そのためある程度ヒット件数が少ない場合のみ「もしかして○○」と表示する、というように決めておくのがよいでしょう。

<h3>まとめ</h3>
本稿ではサブスクリプション・パッケージ0.9から可能になった日本語対応のもしかして検索について、詳しくご説明しました。「もしかして検索」は、GoogleやYahoo!の検索でユーザーに広く親しまれている機能であり、ユーザーの省力化に大きく貢献する、大変優れた効果的な検索です。ぜひECサイトをはじめとしたインターネット向けの検索システムや企業内検索システムに導入してみてください。]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%80%8c%e3%82%82%e3%81%97%e3%81%8b%e3%81%97%e3%81%a6%e3%80%8d%e6%a4%9c%e7%b4%a2%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[お知らせ] 取締役異動（増員）のお知らせ</title>
		<link>http://www.rondhuit.com/%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b-%e5%8f%96%e7%b7%a0%e5%bd%b9%e7%95%b0%e5%8b%95%ef%bc%88%e5%a2%97%e5%93%a1%ef%bc%89%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b-2.html</link>
		<comments>http://www.rondhuit.com/%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b-%e5%8f%96%e7%b7%a0%e5%bd%b9%e7%95%b0%e5%8b%95%ef%bc%88%e5%a2%97%e5%93%a1%ef%bc%89%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b-2.html#comments</comments>
		<pubDate>Thu, 19 Apr 2012 00:15:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ニュース]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1461</guid>
		<description><![CDATA[お客様各位 平素はお引き立てを賜り、ありがとうございます。 当社はこのたび、お客様サービス品質、満足度および営業力のさらなる向上を目的とした経営体制強化のため、取締役の増員を行いましたので、お知らせいたします。 4月19 &#8230;]]></description>
			<content:encoded><![CDATA[お客様各位<br/><br/>

平素はお引き立てを賜り、ありがとうございます。<br/><br/>

当社はこのたび、お客様サービス品質、満足度および営業力のさらなる向上を目的とした経営体制強化のため、取締役の増員を行いましたので、お知らせいたします。<br/><br/>

4月19日より<br/><br/>

<strong>取締役&nbsp;副社長</strong><br/>
<strong>池　真之</strong><br/><br/>
＜経歴＞東京大学教養学科アメリカ科卒業。1989年リクルートに入社。新卒採用、情報誌や新規事業の営業を担当する。1996年米国系通信会社にてセールスマネージャー。その後、欧州系のファックスサーバ企業の日本法人の立ち上げ。1999年日本BEAシステムズ（現オラクル）で金融、公共、製造、流通の営業組織を作り、J2EEを実装したアプリケーションサーバ、WebLogicをエンタープライズ顧客に拡販。2005年から、米国系セキュリティーソフトウェア企業の営業の責任者、代表取締役として、4年間でゼロから年商7億円のビジネスを創出する。その後、バラクーダ・ネットワークスのカントリーマネージャー、アカマイ・テクノロジーズの社長を歴任。<br/><br/>

今後とも、みなさまのご理解とご支援を賜りますよう、よろしくお願い申し上げます。<br/><br/>

株式会社ロンウイット<br/>
代表取締役社長<br/>
関口宏司<br/><br/>
]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b-%e5%8f%96%e7%b7%a0%e5%bd%b9%e7%95%b0%e5%8b%95%ef%bc%88%e5%a2%97%e5%93%a1%ef%bc%89%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solrサブスクリプションリリース0.8.5のお知らせ</title>
		<link>http://www.rondhuit.com/solr%e3%82%b5%e3%83%96%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b90-8-5%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b.html</link>
		<comments>http://www.rondhuit.com/solr%e3%82%b5%e3%83%96%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b90-8-5%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b.html#comments</comments>
		<pubDate>Tue, 17 Apr 2012 03:55:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ニュース]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1440</guid>
		<description><![CDATA[お客様各位 平素はお引き立てを賜り、ありがとうございます。 Solrプラグイン0.8.5をリリースしましたのでお知らせいたします。 本リリースは、先日公開されましたSolr 3.6.0を取り込んだものとなっております。そ &#8230;]]></description>
			<content:encoded><![CDATA[お客様各位<br/><br/>

平素はお引き立てを賜り、ありがとうございます。<br/><br/>

Solrプラグイン0.8.5をリリースしましたのでお知らせいたします。

<br/><br/>

本リリースは、先日公開されましたSolr 3.6.0を取り込んだものとなっております。そのため、新しい日本語形態素解析器Kuromojiが使えます。Kuromojiについて詳しくは、下記の記事をご覧ください：<br/><br/>
<a  href="http://www.rondhuit.com/solr%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%AF%BE%E5%BF%9C.html" target="_blank">http://www.rondhuit.com/solrの日本語対応.html</a>

<br/><br/>
なお、Kuromojiは記事執筆時時点から名称がKuromojiTokenizer等からJapaneseTokenizer等へ名称変更が行われております。そのため、記事中のクラス名名称などを適宜読み替えていただく必要があります。また、Kuromojiのこの名称変更により、lucene-gosenと名称のバッティングが発生しました。lucene-gosenではこれに備え、バージョン2.0.0よりJapaneseTokenizer等からGosenTokenizer等への名称変更を行っております。

この件に関しまして、過去のリリースから本リリースへアップグレードするお客様は、プラグインのCHANGES.txtにあります注意点について必要な作業の実施をお願いいたします。

<br/><br/><br/>

また、本リリースではSolrのクエリログ解析・可視化機能をdeprecatedとさせていただきました。弊社では類似の無料のサービスsoleami（ソレミ）をご提供しておりますが、両方の機能の利用状況を鑑み、お客様への価値のご提供を最大化できるよう議論を重ねた結果、今回開発リソースの集中化を行うことといたしました。<br/>
<br/>
soleami（ソレミ）による可視化の画面サンプル<br/>
<a  href="http://soleami.com/screenshot_ja" target="_blank">http://soleami.com/screenshot_ja</a>
<br/><br/>
利用規約<br/>
<a  href="http://soleami.com/terms_ja" target="_blank">http://soleami.com/terms_ja</a>
<br/>
<br/><br/>

また、検索キーワードのサジェスト機能について最近多くのお問い合わせをちょうだいするようになってまいりました。そこでこれまで個別にお配りしておりましたサジェスト機能のシステム構成図を本リリースに含めました。
<br/><br/>
その他いくつかの不具合修正が含まれています。詳しくはCHANGES.txt をご覧ください。

<br/><br/>
今後ともよろしくお願い申し上げます。]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/solr%e3%82%b5%e3%83%96%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b90-8-5%e3%81%ae%e3%81%8a%e7%9f%a5%e3%82%89%e3%81%9b.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solrの日本語対応 -新しく追加されたトークナイザ・トークンフィルタ-</title>
		<link>http://www.rondhuit.com/solr%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%af%be%e5%bf%9c.html</link>
		<comments>http://www.rondhuit.com/solr%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%af%be%e5%bf%9c.html#comments</comments>
		<pubDate>Thu, 01 Mar 2012 08:19:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[テクノロジ]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1322</guid>
		<description><![CDATA[先日、Lucene/Solrのbranch_3x(3.6)とtrunk(4.0)にコミットされた日本語向けのトークナイザ・トークンフィルタをご紹介します。 LuceneのJIRAのチケット LUCENE-3305 にて、 &#8230;]]></description>
			<content:encoded><![CDATA[先日、Lucene/Solrのbranch_3x(3.6)とtrunk(4.0)にコミットされた日本語向けのトークナイザ・トークンフィルタをご紹介します。<br/>
LuceneのJIRAのチケット <a href="https://issues.apache.org/jira/browse/LUCENE-3305" target="_blank">LUCENE-3305</a> にて、日本語形態素解析器Kuromojiが導入されました。<br/>
これにより、日本語ドキュメントに対して形態素解析に基づく単語分割が可能になります。<br/>
従来、Lucene/Solrで日本語対応をする場合は、lucene-gosenやSenを使用する方法などをとってきましたが、今回の対応であらかじめLucene/Solrに組み込まれたものを使用するということが可能になります。<br/>
また一方で、<a href="https://issues.apache.org/jira/browse/LUCENE-2906" target="_blank">LUCENE-2906</a>にて、CJK文字に関するトークンフィルタも追加されました。<br/>
本記事では、これらのトークナイザ・トークンフィルタに関して、2012/2/23時点のソースに基づいて調査したものを解説いたします。<br/>

<h3>新しく追加されたトークナイザ・トークンフィルタ</h3>

<h4>KuromojiTokenizer</h4>
日本語形態素解析器Kuromojiで単語分割するトークナイザです。<br/>
<br/>
Solrでの定義例: <br/>
<pre>
&lt;fieldType name=&quot;text_ja&quot; class=&quot;solr.TextField&quot; positionIncrementGap=&quot;100&quot;&gt;
  &lt;analyzer&gt;
    &lt;tokenizer class=&quot;solr.KuromojiTokenizerFactory&quot; mode=&quot;search&quot;
          user-dictionary=&quot;userdict.txt&quot; user-dictionary-encoding=&quot;UTF-8&quot;/&gt;
    :
</pre>


属性: <br/>
　mode: ”normal”、”search”、”extended”のいずれかを指定します。デフォルトは”search”です。<br/>
　user-dictionary: ユーザ辞書の定義ファイルを指定します。<br/>
　user-dictionary-encoding: 定義ファイルのエンコードを指定します。<br/>
<br/>
解説: <br/>
・辞書は、mecab用IPA辞書mecab-ipadicを使用しています。<br/>
　Lucene側でmecab-NAIST-jdicに変更することが可能です。<br/>
・mode詳細<br/>
　　normal：形態素解析による通常の単語分割を行います。<br/>
　　search：複合語で構成された単語を細かく分割します。<br/>
　　　　　　例えば「関西国際空港」という固有名詞を「関西」「国際」「空港」に分割します。<br/>
　　　　　「国際」や「空港」で「関西国際空港」をヒットすることができるようになります。<br/>
　　extended ：searchモードの処理をしつつ、追加で、辞書にない未知語を1-gramに分割します。<br/>
　　　　　　　　例えば「ディジカメ」という未知語をデ/ィ/ジ/カ/メに分割します。<br/>
　　　　　　　　未知語の検索漏れを防ぎます。<br/>
・mode別の出力例です。<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-1.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-1.png" alt="" title=""  width="80%" height="40%" class="aligncenter size-full wp-image-407" /></a><br/>
・ユーザ辞書<br/>
　ユーザ辞書はSolrホームディレクトリのconfに配置します。Solr起動時に読み込まれます。<br/>
　デフォルト辞書にない新語・人名などを登録することができます。<br/>
　CSV形式で、単語, 単語分割表現, よみがな, 品詞名を登録します。<br/>
　ユーザ辞書登録されている単語は優先的に単語分割されます。<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-2.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-2.png" alt="" title=""  width="50%" height="35%" class="aligncenter size-full wp-image-407" /></a><br/>
・その他<br/>
　・Lucene側に形態素解析の様子を視覚化するメソッドが用意されています。（例:最高裁判所）　<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-3.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-3.png" alt="" title=""  width="50%" height="30%" class="aligncenter size-full wp-image-407" /></a><br/>
　・トークナイズの処理では、経路コスト・連結コスト・単語コストを算出し、最も低いコストを選択して<br/>
　　単語分割が処理されます。searchモードでは、漢字３文字以上、それ以外の文字８文字以上でペナルティ<br/>
　　コストを加算しています。この調整の結果、短い単語での分割ができます。<br/>
　・ユーザ辞書登録されている単語のコスト値は、低く設定されているため、優先的に単語分割されます。<br/>
　・現時点でオープンしているチケット <a href="https://issues.apache.org/jira/browse/LUCENE-3767" target="_blank">LUCENE-3767</a> があります。形態素解析の計算ロジックの改修と<br/>
　　searchモードの改良があるためこれがコミットされると結果が若干変わることが想定されます。<br/>

<h4>KuromojiBaseFormFilter</h4>
辞書の基本形に変換するフィルタです。<br/>
<br/>
Solrでの定義例: <br/>
<pre>
&lt;fieldType name=&quot;text_ja&quot; class=&quot;solr.TextField&quot; positionIncrementGap=&quot;100&quot;&gt;
  &lt;analyzer&gt;
    &lt;tokenizer class=&quot;solr.KuromojiTokenizerFactory&quot; mode=&quot;search&quot;/&gt;
    &lt;filter class=&quot;solr.KuromojiBaseFormFilterFactory&quot;/&gt;
    :
</pre>


属性: なし<br/>
出力例: 昨日買ったきれいなパンを食べた<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-4.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-4.png" alt="" title=""  width="50%" height="30%" class="aligncenter size-full wp-image-407" /></a><br/>

<h4>KuromojiPartOfSpeechStopFilter</h4>
設定ファイルに記載した品詞に該当するTokenを除外するフィルタです。<br/>
<br/>
Solrでの定義例: <br/>
<pre>
&lt;fieldType name=&quot;text_ja&quot; class=&quot;solr.TextField&quot; positionIncrementGap=&quot;100&quot;&gt;
  &lt;analyzer&gt;
    &lt;tokenizer class=&quot;solr.KuromojiTokenizerFactory&quot; mode=&quot;search&quot;/&gt;
    &lt;filter class=&quot;solr.KuromojiBaseFormFilterFactory&quot;/&gt;
    &lt;filter class=&quot;solr.KuromojiPartOfSpeechStopFilterFactory&quot; 
                   tags=&quot;lang/stoptags_ja.txt&quot; enablePositionIncrements=&quot;true&quot;/&gt;
    :
</pre>


属性: <br/>
　tags: 除外対象品詞の設定ファイルを指定します。<br/>
　enablePositionIncrements:取り除いたストップワードの位置増分情報を有効にする(true)か<br/>
　　　　　　　　　　　　　　否か(false)を指定します。<br/>
解説: <br/>
・設定ファイルはSolrホームディレクトリのconf/lang/stoptags_ja.txtに配置されています。<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-5.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-5.png" alt="" title=""  width="50%" height="30%" class="aligncenter size-full wp-image-407" /></a><br/>
・出力例: 昨日買ったきれいなパンを食べた<br/>
　(例では、助動詞が除外対象品詞になっています)<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-6.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/kuromoji-6.png" alt="" title=""  width="50%" height="30%" class="aligncenter size-full wp-image-407" /></a><br/>

<h4>CJKWidthFilter</h4>
全角のASCII文字を半角に、半角カタカナを全角にするフィルタです。<br/>
<br/>
Solrでの定義例: <br/>
<pre>
&lt;fieldType name=&quot;text_ja&quot; class=&quot;solr.TextField&quot; positionIncrementGap=&quot;100&quot;&gt;
  &lt;analyzer&gt;
    &lt;tokenizer class=&quot;solr.KuromojiTokenizerFactory&quot; mode=&quot;search&quot;/&gt;
    &lt;filter class=&quot;solr.CJKWidthFilterFactory&quot;/&gt;
    :
</pre>


属性: なし<br/>
出力例: ５４３２１ＳＯＬＲﾊﾝｶｸｶﾀｶﾅ<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/cjk-1.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/cjk-1.png" alt="" title=""  width="50%" height="40%" class="aligncenter size-full wp-image-407" /></a><br/>

<h4>CJKBigramFilter</h4>
StandardTokenizerまたはICUTokenizer から生成されたCJK文字のBigramを生成するフィルタです。
<br/>
Solrでの定義例: <br/>
<pre>
&lt;fieldType name=&quot;text_cjk&quot; class=&quot;solr.TextField&quot; positionIncrementGap=&quot;100&quot;&gt;
  &lt;analyzer&gt;
    &lt;tokenizer class=&quot;solr.StandardTokenizer&quot;/&gt;
    &lt;filter class=&quot;solr.CJKBigramFilter&quot;/&gt;
    :
</pre>


属性: なし<br/>
出力例: Hello, 日本人です。<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/cjk-2.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/cjk-2.png" alt="" title=""  width="50%" height="40%" class="aligncenter size-full wp-image-407" /></a><br/>

<h3>従来の日本語対応との比較</h3>
従来の日本語対応としては主に、形態素解析では、lucene-gosenのJapaneseTokenizerや各種Filterを利用<br/>する方法と、N-Gramでは、Lucene/Solrに付属のCJKTokenizerを利用する方法がありました。<br/>
今回の新しく追加されたトークナイザ・フィルタとの比較をすると次のようになります。

<h4>文字列処理クラスの対比</h4>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/2-1.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/2-1.png" alt="" title=""  width="90%" height="40%" class="aligncenter size-full wp-image-407" /></a><br/>
<br/>
同じ機能を有するトークナイザやフィルタがありますが、ないものもあることがわかります。<br/>
なお、JapaneseTokenizerには単語を品詞により合成することができるcompositePOS属性を持って<br/>いますが、KuromojiTokenizerにはその機能は持っていません。<br/>
また、JapaneseKatakanaStemFilterは、Kuromoji側と組み合わせて併用するということも考えられます。<br/>

<h4>使用する辞書に関する対比</h4>
・ 対応する辞書<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/2-2.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/2-2.png" alt="" title=""  width="80%" height="40%" class="aligncenter size-full wp-image-407" /></a><br/>
<br/>
・ カスタム辞書の取り扱い<br/>
　lucene-gosen:<br/>
　　カスタム辞書のCSVを追加して辞書のビルドを行い、jarファイルを再配置します。<br/>
　Kuromoji:<br/>
　　カスタム辞書のCSVをSolrホームディレクトリのconfに配置して、Solrを再起動します。<br/>
　　単語のコスト値を入力できません(決め打ちになっています)。<br/>

<h4>JapaneseTokenizerとKuromojiTokenizerのトークナイズの対比</h4>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/2-3.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/2-3.png" alt="" title=""  width="80%" height="40%" class="aligncenter size-full wp-image-407" /></a><br/>
<br/>
JapaneseTokenizerでは固有名詞はそのまま切り出しますが、KuromojiTokenizerのsearchモードでは<br/>複合語の単語分割がより促されていることがわかります。<br/>

<h4>インデクシングや検索の処理速度に関する対比</h4>
従来の日本語用スキーマ設定とKuromoji利用スキーマ設定で<br/>
Wikipediaデータ約82万件をインデクシングし、その時間を計測しました。<br/>
また検索時のレスポンスタイムおよびQPSを計測しました。<br/>
<br/>

A)従来の日本語用スキーマ<br/>
　text_jaのフィールドタイプは、Solrに組込済みのtext_jaのKuromoji用設定をlucene-gosen用クラス<br/>
　に置き換えて設定しています。<br/>
　text_cjkのフィールドタイプは、従来のCJKTokenizerを利用し、半角カタカナの全角変換は<br/>
　MappingCharFilterを利用しています。<br/>
 　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/2-4.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/2-4.png" alt="" title=""  width="50%" height="30%" class="aligncenter size-full wp-image-407" /></a><br/>
<br/>
B) Kuromoji利用スキーマ<br/>
　text_jaとtext_cjkのフィールドタイプはそれぞれ、Solrのbranch_3x/trunkに<br/>
　内包されている設定を利用しています。<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/2-5.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/2-5.png" alt="" title=""  width="50%" height="30%" class="aligncenter size-full wp-image-407" /></a><br/>
<br/>
ID、タイトル、本文のフィールドからなるデータをWikipediaデータからロードしてインデックスを<br/>
作成し、text_jaフィールドタイプでのインデクシングと、text_cjkフィールドタイプでの<br/>
インデクシングをそれぞれ行っています。<br/>
<br/>
そして、クライアントからJMeterを使って検索リクエストを発行します。検索する文字列は、<br/>
弊社のサブスクリプション・パッケージ付属の重要語抽出機能を用いて抽出したフレーズを<br/>
用いています。Solrは、ヒープサイズを1024MBにして起動し、CPUの消費を平均70-80%に<br/>
なるようにクライアントのJMeterスレッド数を調整して負荷がけを行い、平均レスポンスタイムと<br/>QPSを計測しました。<br/>
<br/>
<br/>
<h5>計測結果</h5>
・インデクシング時間<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/2-6.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/2-6.png" alt="" title=""  width="80%" height="40%" class="aligncenter size-full wp-image-407" /></a><br/>
<br/>
・レスポンスタイム(Avg.)およびQPS<br/>
　<a href="http://www.rondhuit.com/wordpress/wp-content/uploads/2-7.png" target="_blank">
<img src="http://www.rondhuit.com/wordpress/wp-content/uploads/2-7.png" alt="" title=""  width="80%" height="40%" class="aligncenter size-full wp-image-407" /></a><br/>
<br/>
<br/>
結果としては、従来の日本語用スキーマ設定とKuromoji利用スキーマ設定で、<br/> 
多少の差異はありますがそれほど大きな違いがないということがわかりました。<br/> 
<br/> 
<br/> 
今回新しく追加されたトークナイザやフィルタは、Solrの日本語対応として利用されることが<br/>
今後増えるであろうという印象を持ちました。<br/>
特にKuromojiTokenizerのsearchモードは、検索漏れをカバーしうる単語分割をしますので、<br/>
適用されるケースが増えていくものと思われます。<br/>
今後も改良が進められると思いますので推移を見守るのがよいかと思います。<br/>]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/solr%e3%81%ae%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%af%be%e5%bf%9c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>soleami （ソレミ）の使い方〜Solrの立ち上げからログの可視化まで〜</title>
		<link>http://www.rondhuit.com/soleami-howto.html</link>
		<comments>http://www.rondhuit.com/soleami-howto.html#comments</comments>
		<pubDate>Tue, 14 Feb 2012 07:31:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[テクノロジ]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1255</guid>
		<description><![CDATA[Apache Solrが出力するクエリログを可視化するツールsoleamiの使い方をご紹介します。本稿ではもっとも一般的な使い方を想定し、SolrをTomcat上にデプロイして使う場合について解説します。 おおまかな手順 &#8230;]]></description>
			<content:encoded><![CDATA[<p>Apache Solrが出力するクエリログを可視化するツールsoleamiの使い方をご紹介します。本稿ではもっとも一般的な使い方を想定し、SolrをTomcat上にデプロイして使う場合について解説します。</p>
<p>おおまかな手順は、以下の通りです（すでにTomcat上で稼働しているSolrをお持ちの方や弊社サブスクリプション・パッケージのお客様は、手順４．からお読みください）。</p>

<ol>
	<li><a href="#download_tom">Tomcatのダウンロード</a></li>
	<li><a href="#download_solr">Solrのダウンロード</a></li>
	<li><a href="#encoding">文字化け対策</a></li>
	<li><a href="#config">solrconfig.xmlの編集</a></li>
	<li><a href="#deploy">SolrのTomcatへのデプロイと起動</a></li>
	<li><a href="#search">検索を実行</a></li>
	<li><a href="#visualize">soleamiでログを可視化</a></li>
</ol>

<p>なお、Linux/Macの環境を前提に話を進めます。Windowsの場合はcygwinなどを使いながら、置き換えて読み進めてください。</p>
<p>またユーザsolrがログインディレクトリ/home/solrの下にworkというディレクトリを作成し、その下に環境を作成して作業するものとします。そこでまず、workというディレクトリを作成しておきます。</p>

<pre>
$ pwd
/home/solr
$ mkdir work
$ cd work
$ pwd
/home/solr/work
</pre>



<p>なお、JavaとAntがあらかじめインストールされていることが必要です。</p>

<a name="download_tom"></a>
<h3>Tomcatのダウンロード</h3>
<p>まず、Tomcat 6.0.35をダウンロードします。</p>

<pre>
# workディレクトリにTomcat 6.0.35をダウンロード
$ pwd
/home/solr/work
$ wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
</pre>



<p>そしてダウンロードしたファイルを解凍します。</p>

<pre>
$ wget tar xvzf apache-tomcat-6.0.35.tar.gz
x apache-tomcat-6.0.35/bin/catalina.sh
x apache-tomcat-6.0.35/bin/digest.sh
x apache-tomcat-6.0.35/bin/setclasspath.sh
x apache-tomcat-6.0.35/bin/shutdown.sh
x apache-tomcat-6.0.35/bin/startup.sh
x apache-tomcat-6.0.35/bin/tool-wrapper.sh
x apache-tomcat-6.0.35/bin/version.sh
     :
</pre>



<p>Tomcatに関しての準備は以上です。</p>

<a name="download_solr"></a>
<h3>Solrのダウンロード</h3>

<p>次にSolrをダウンロードします。ここでは本日時点の最新バージョンである3.5.0をダウンロードします。注意していただきたいのは、後述するように「文字化け対策」をする必要があるので、Solrのバイナリ版ではなく、ソース版をダウンロードする必要があることです。</p>

<pre>
# workディレクトリにソース版Solr 3.5.0をダウンロード
$ pwd
/home/solr/work
$ wget http://ftp.jaist.ac.jp/pub/apache//lucene/solr/3.5.0/apache-solr-3.5.0-src.tgz
</pre>



<p>そしてダウンロードしたファイルを解凍します。</p>

<pre>
$ tar xvzf apache-solr-3.5.0-src.tgz 
x apache-solr-3.5.0/dev-tools/
x apache-solr-3.5.0/dev-tools/eclipse/
x apache-solr-3.5.0/dev-tools/idea/
x apache-solr-3.5.0/dev-tools/idea/.idea/
x apache-solr-3.5.0/dev-tools/idea/.idea/copyright/
x apache-solr-3.5.0/dev-tools/idea/.idea/libraries/
x apache-solr-3.5.0/dev-tools/idea/lucene/
x apache-solr-3.5.0/dev-tools/idea/lucene/contrib/
     :
</pre>



<p>以上でSolrの準備自体は終わりですが、次に「文字化け対策」の作業が必要です。</p>

<a name="encoding"></a>
<h3>文字化け対策</h3>
<p>ダウンロードしたままのTomcatにSolrをデプロイすると、確実に文字化けが発生してしまいます。そこでTomcatとSolrに対して以下の作業が必要になります。</p>

<h4>Tomcatのserver.xmlの編集</h4>
<p>Tomcatのserver.xmlをエディタで開きます。</p>

<pre>
$ vi apache-tomcat-6.0.35/conf/server.xml
</pre>



<p>そして次のConnector要素の部分を見つけ、useBodyEncodingForURI=&#8221;true&#8221;を追記します。</p>

<pre>
    &lt;Connector port=&quot;8080&quot; protocol=&quot;HTTP/1.1&quot;
               connectionTimeout=&quot;20000&quot;
               redirectPort=&quot;8443&quot; useBodyEncodingForURI=&quot;true&quot;/&gt;
</pre>



<p>できたら、server.xmlファイルを保存してエディタを終了します。</p>

<h4>Tomcat提供のサーブレットフィルターをSolrにコピー</h4>
<p>次に、TomcatのexamplesにあるサーブレットフィルターをSolrにコピーします。</p>

<pre>
$ cp -R apache-tomcat-6.0.35/webapps/examples/WEB-INF/classes/filters apache-solr-3.5.0/solr/core/src/java
</pre>



<h4>Solrのweb.xmlを編集</h4>
<p>次にSolrのweb.xmlを編集します。適当なエディタでweb.xmlを開いてください。</p>

<pre>
$ vi apache-solr-3.5.0/solr/webapp/web/WEB-INF/web.xml
</pre>



<p>そしてweb.xmlファイルの中の既存のfilter定義の前に次のようなSetCharacterEncodingFilterを使用する旨の記述を挿入します。</p>

<pre>
  &lt;filter&gt;
    &lt;filter-name&gt;SetCharacterEncoding&lt;/filter-name&gt;
    &lt;filter-class&gt;filters.SetCharacterEncodingFilter&lt;/filter-class&gt;
    &lt;init-param&gt;
      &lt;param-name&gt;encoding&lt;/param-name&gt;
      &lt;param-value&gt;UTF-8&lt;/param-value&gt;
    &lt;/init-param&gt;
  &lt;/filter&gt;
  &lt;!-- 以下は既存の定義です --&gt;
  &lt;filter&gt;
    &lt;filter-name&gt;SolrRequestFilter&lt;/filter-name&gt;
     :
</pre>



<p>次に同じファイルのもう少し下を見ていくと、filter-mappingを定義している箇所があります。同じくその前に次のようにSetCharacterEncodingの定義を挿入します。</p>

<pre>
  &lt;filter-mapping&gt;
    &lt;filter-name&gt;SetCharacterEncoding&lt;/filter-name&gt;
    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
  &lt;/filter-mapping&gt;
  &lt;!-- 以下は既存の定義です --&gt;
  &lt;filter-mapping&gt;
    &lt;filter-name&gt;SolrRequestFilter&lt;/filter-name&gt;
      :
</pre>



<h4>Solrのビルド</h4>
<p>以上でビルドの準備が整いましたので、antを使ってSolrをビルドします。</p>

<pre>
$ cd apache-solr-3.5.0/solr
$ pwd
/home/solr/work/apache-solr-3.5.0/solr
$ ant -Dversion=3.5.0 example
</pre>



<a name="config"></a>
<h3>solrconfig.xmlの編集</h3>
<p>次に、solrconfig.xmlから、（ログの可視化には）不要な部分を取り除きます。この手順は必須ではありませんが、デフォルトの状態だとSolr起動時におかしなクエリが飛んでしまうので、可視化した際にゴミが目立ってしまいます。そこで、次のように適当なエディタでsolrconfig.xmlファイルを開きます。</p>

<pre>
$ pwd
/home/solr/work/apache-solr-3.5.0/solr
$ vi example/solr/conf/solrconfig.xml
</pre>



<p>そして以下のようなfirstSearcherの箇所を見つけ、listenerタグごと削除するか、以下のようにコメントアウトしてください。</p>

<pre>
    &lt;listener event=&quot;firstSearcher&quot; class=&quot;solr.QuerySenderListener&quot;&gt;
      &lt;arr name=&quot;queries&quot;&gt;
&lt;!-- ここの部分をコメントアウトします。
        &lt;lst&gt;                                                                                                 
          &lt;str name=&quot;q&quot;&gt;static firstSearcher warming in solrconfig.xml&lt;/str&gt;                                  
        &lt;/lst&gt;                                                                                                
--&gt;
      &lt;/arr&gt;
    &lt;/listener&gt;
</pre>



<a name="deploy"></a>
<h3>SolrのTomcatへのデプロイと起動</h3>
<p>次に、SolrのwarファイルをTomcatにデプロイします。前述の手順でSolrをビルドすると、Solrのdistというディレクトリの下にwarファイルが作られています。このファイルはapache-solr-3.5.0.warという名前になっているので、solr.warと名前を変えて、Tomcatのwebappsディレクトリの下にコピーしてデプロイします。</p>

<pre>
$ pwd
/home/solr/work
$ cp apache-solr-3.5.0/solr/dist/apache-solr-3.5.0.war apache-tomcat-6.0.35/webapps/solr.war
</pre>



<p>そしてTomcatを起動します。その際、環境変数CATALINA_OPTSにSolrホームディレクトリ（solrconfig.xmlファイルが配置されているディレクトリの親ディレクトリ）を指し示すように設定が必要です。また環境によっては、システムプロパティfile.encodingの設定も必要になりますので、環境に合わせてTomcatを起動してください。</p>

<pre>
$ export CATALINA_OPTS="-Dsolr.solr.home=/home/solr/work/apache-solr-3.5.0/solr/example/solr -Dfile.encoding=UTF-8"; ./apache-tomcat-6.0.35/bin/startup.sh
</pre>



<a name="search"></a>
<h3>検索を実行</h3>
<p>ではブラウザからTomcatにアクセスして管理画面を立ち上げてみましょう。ブラウザから <a href="http://localhost:8080/solr/admin/">http://localhost:8080/solr/admin/</a> にアクセスします。</p>

<div id="attachment_1265" class="wp-caption alignnone" style="width: 490px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/3eacf9cfb739870f245bda1cca0ef6bb-480x282.png" alt="soleami-howto-solr-admin" title="soleami-howto-solr-admin" width="480" height="282" class="size-medium wp-image-1265" /><p class="wp-caption-text">Solrの管理画面</p></div>

<p>ここでは、街中検索系のサイトを運営していると仮定して、管理画面の入力エリアに「渋谷 ラーメン」と入力してSearchボタンをクリックします。なお、「渋谷」と「ラーメン」の間にはスペースが入っています。いうまでもなく、渋谷でラーメン屋さんを探しているようなイメージです。</p>

<p>すると、XMLで検索結果が戻ってきますが、データも入れていないので当然0件の検索結果になります。1回だけのクエリではつまらないのでもう一つ、「渋谷 郵便局」という検索もやっておきましょう。ブラウザの戻るボタンで管理画面に戻り、入力エリアに「渋谷 郵便局」と入力してSearchボタンをクリックします。</p>

<p>この状態で、Tomcatのログを確認しておきましょう。catalina.outの最後の方に今検索した「渋谷 ラーメン」や「渋谷 郵便局」という行が記録されているはずです。</p>

<pre>
$ tail apache-tomcat-6.0.35/logs/catalina.out
2012/02/14 14:02:46 org.apache.solr.core.SolrCore execute
情報: [] webapp=/solr path=/select/ params={indent=on&#038;start=0&#038;q=渋谷+ラーメン&#038;version=2.2&#038;rows=10} hits=0 status=0 QTime=37 
2012/02/14 14:02:58 org.apache.solr.core.SolrCore execute
情報: [] webapp=/solr path=/select/ params={indent=on&#038;start=0&#038;q=渋谷+郵便局&#038;version=2.2&#038;rows=10} hits=0 status=0 QTime=1 
</pre>



<p>このとき、文字化けしていたり、文字化けしていなくてもUTF-8で記録されていない場合は、あとで可視化できなくなってしまいますので、その場合はこれまでの手順を見直してください。</p>

<a name="visualize"></a>
<h3>soleamiでログを可視化</h3>
<p>さていよいよcatalina.outのクエリログを可視化してみましょう。もしまだsoleamiにユーザ登録していなかったら、ここで <a href="https://soleami.com/p/signup?locale=ja">ユーザ登録</a> から登録しておいてください。</p>

<p>ではsoleamiのメニューのアップロードをクリックします。ここで未ログインの場合はログインを促されますので、登録したユーザ名（メールアドレス）とパスワードを使ってログインします。</p>

<p>すると下のようなログファイルをアップロードする画面が表示されます。</p>

<div id="attachment_1268" class="wp-caption alignnone" style="width: 490px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/de28a5800def15615d68e62aa6d17b22-480x395.png" alt="soleami-howto-upload" title="soleami-howto-upload" width="480" height="395" class="size-medium wp-image-1268" /><p class="wp-caption-text">soleamiのファイルアップロード画面</p></div>

<p>画面に指示のあるとおり、ログファイルはZIP圧縮してアップロードしてください。その際に、機密保持のためにシステムから指定されたパスワードで暗号化する必要があります（実は暗号化しなくても動作しますが、後述するようにアップロード中はSSL通信しないので、暗号化するようにしてください）。</p>

<pre>
$ cd apache-tomcat-6.0.35/logs
$ zip -e catalina.out.zip catalina.out 
Enter password: fRciL_yU
Verify password: fRciL_yU
  adding: catalina.out (deflated 92%)
</pre>



<p>ここではZIP圧縮するファイルはcatalina.outひとつだけですが、ディレクトリに複数のクエリログファイルがある場合、そのディレクトリごとZIP圧縮しても問題ありません。また、各ログファイルは.logという拡張子を持っていなくても大丈夫です。ただし、まとめてZIP圧縮する場合は、余計な（ゴミ）ファイルは含まれないようにしてください。</p><p>なお、ZIP圧縮後のファイルサイズは10MBを超えてはいけません（10MBを超える場合は、複数回に分けてアップロードしてください。最大過去12ヶ月分のログが可視化できます）。</p>

<p>ZIP圧縮したらファイルアップロードの画面でZIPファイルを選択し、[アップロード] ボタンをクリックします。すると、お使いのブラウザによっては、次のような「セキュリティ警告」が表示されます。</p>

<div id="attachment_1276" class="wp-caption alignnone" style="width: 485px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/ccd95cb5223e11443c3006219ef0615a.png" alt="soleami-howto-security-warning" title="soleami-howto-security-warning" width="475" height="188" class="size-full wp-image-1276" /><p class="wp-caption-text">ファイルアップロードしようとすると、セキュリティ警告が表示される</p></div>

<p>これは、今表示されている「ファイルアップロード画面」自体がSSLで送信されているのに対し、アップロードしようとしているZIPファイルがSSLを使っていないためです。しかし、ZIPファイルは暗号化されているので機密は保たれていますから、[続ける] をクリックしてアップロードします。
</p>

<p>アップロード終了後、数分〜数十分待つと次のようなメールがsoleamiから届きます。</p>

<pre>
おめでとうございます！

アップロードしていただきましたログファイルの解析が終了しました。
下記リンクをクリックし、可視化を体験してください！

http://soleami.com/p/visualize?locale=ja

アップロード時刻（日本時間）: 2012/02/14 14:44:47
データベースを初期化する: No
</pre>



<p>ではメール中にあるリンクをクリックして、「可視化」を開始してみましょう。</p>

<p>「可視化」の画面は最初は[トップ10] タブが選択された状態になっています。今回は「渋谷 ラーメン」および「渋谷 郵便局」という検索を行いましたので、下の画面のように今月の「トップ10」が表示されます（なお、先月以前の部分は「no log data&#8230;」と表示されます）。</p>

<div id="attachment_1282" class="wp-caption alignnone" style="width: 446px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/d585ccaf21bc0544367002aaf7a3916c.png" alt="soleami-howto-top10" title="soleami-howto-top10" width="436" height="329" class="size-full wp-image-1282" /><p class="wp-caption-text">トップ10チャートのサンプル</p></div>

<p>次に[トレンド1000] のタブを選択してみましょう。すると、次のように検索キーワードのリストが表示されます。</p>

<div id="attachment_1283" class="wp-caption alignnone" style="width: 275px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/d71c9c83be2d3fc1634b8a8142861773.png" alt="soleami-howto-trend1000-list" title="soleami-howto-trend1000-list" width="265" height="178" class="size-full wp-image-1283" /><p class="wp-caption-text">トレンド1000の検索キーワードリストの表示</p></div>

<p>ここで、「渋谷(2)」をクリックします。すると、次のような折れ線グラフと棒グラフが表示されます。</p>

<div id="attachment_1284" class="wp-caption alignnone" style="width: 490px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/38438c812e8da819471bdae85177533b-480x310.png" alt="soleami-howto-trend1000-chart" title="soleami-howto-trend1000-chart" width="480" height="310" class="size-medium wp-image-1284" /><p class="wp-caption-text">トレンド1000で「渋谷」を選択したところ</p></div>

<p>ここで折れ線グラフの方は「渋谷」という検索キーワードの過去12ヶ月間の検索回数の推移を表しています。そして棒グラフの方は、主キーワードである「渋谷」と一緒に検索された副キーワードの過去12ヶ月間の累積回数を表しています。これらのチャートから「渋谷」で「ラーメン」屋や「郵便局」を探している人がいるんだなあ、ということが読み取れます。</p>

<p>次に[0件ヒット] のタブを選択してみましょう。すると先ほどと同じようにクエリのリストが表示されます。違うのは、先ほどは検索キーワードの単位にリスト表示されていたのが、ここではクエリ文字列単位になっていることです。「渋谷 ラーメン(1)」「渋谷 郵便局(1)」となっていますので、「渋谷 ラーメン(1)」をクリックしてみます。すると次の画面のようなチャートが表示され、「0件ヒット」を起こした「渋谷 ラーメン」というクエリの過去12ヶ月間の推移がわかります。</p>

<div id="attachment_1287" class="wp-caption alignnone" style="width: 490px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/5870a20af0ad48ab5d9e9ae71d40eda9-480x245.png" alt="soleami-howto-zerohits" title="soleami-howto-zerohits" width="480" height="245" class="size-medium wp-image-1287" /><p class="wp-caption-text">0件ヒットで適当なクエリを選択してチャートを表示したところ</p></div>

<p>「0件ヒット」は検索システムがユーザ（サイト訪問者）のニーズに応えられなかったことを表しています。特にECサイトでは「0件ヒット」の発生は重大視される傾向にあります。「0件ヒット」が起こった場合は、類義語辞書を使っているサイトではその内容を見直したり、コンテンツを検討するなどして発生を少なくすることが、ユーザの満足度向上につながります。</p>

<p>今回のサンプルではたった2回の検索実行を可視化しただけでしたが、Solrの起動から可視化までの流れをつかんでいただけたことと思います。実際にSolrを運用しているログファイルを分析すると、季節による検索キーワードの傾向が読み取れたり、また企業内検索では「社員が今求めているもの」を把握することができます。</p>

<p>Solrとともにsoleamiを上手に活用していただき、貴社の検索システムのコンテンツの充実化や利便性向上にぜひお役立てください！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/soleami-howto.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[プレスリリース] Apache Solrのクエリログ可視化サービス</title>
		<link>http://www.rondhuit.com/%e3%83%97%e3%83%ac%e3%82%b9%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9-apache-solr%e3%81%ae%e3%82%af%e3%82%a8%e3%83%aa%e3%83%ad%e3%82%b0%e5%8f%af%e8%a6%96%e5%8c%96%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9.html</link>
		<comments>http://www.rondhuit.com/%e3%83%97%e3%83%ac%e3%82%b9%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9-apache-solr%e3%81%ae%e3%82%af%e3%82%a8%e3%83%aa%e3%83%ad%e3%82%b0%e5%8f%af%e8%a6%96%e5%8c%96%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9.html#comments</comments>
		<pubDate>Mon, 13 Feb 2012 15:00:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[プレスリリース]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1252</guid>
		<description><![CDATA[株式会社ロンウイット（本社：東京都千代田区、代表取締役社長：関口宏司）はオープンソース・ソフトウェアの検索エンジンApache Solr（アパッチ ソーラー）のクエリログを可視化するサービスsoleami（ソレミ）を開始 &#8230;]]></description>
			<content:encoded><![CDATA[<p>株式会社ロンウイット（本社：東京都千代田区、代表取締役社長：関口宏司）はオープンソース・ソフトウェアの検索エンジンApache Solr（アパッチ ソーラー）のクエリログを可視化するサービスsoleami（ソレミ）を開始しました。利用料金は無料です。</p>

<p>soleami<br/><a href="http://soleami.com/ja" title="soleami | Visualize the needs of your visitors.">http://soleami.com/ja</a>
</p>

<p>Solrはインターネットで公開されているWebサイトのサイト内検索や、非公開のイントラネットの企業内検索など、世界中で広く使われているOSSの検索エンジンです。</p>

<p>Solrは実行した検索リクエストをログファイル（クエリログ）に記録しています。クエリログは「サイト訪問者のニーズのリスト」とも言えるものですが、検索キーワードごとに集計する作業は大変な労力がかかるため、これまで活用されてきていませんでした。</p>

<p>soleamiはこの問題を解決するため、クエリログをアップロードするだけで自動的に集計を行い、Webブラウザでチャートを表示できることを目標に開発されました。Solrの管理者は誰でも無料で、Solrのクエリログをsoleamiにアップロードし、サイト訪問者のニーズを可視化できるようになりました。</p>

<p>soleamiが作成するチャートには次の種類があります（<a href="http://soleami.com/screenshot_ja" title="画面サンプル" target="_blank">画面サンプルはこちら</a>）。
<ul>
	<li>トップ10<br/>毎月のトップ10の人気検索キーワードを集計して表示します。過去12ヶ月間までさかのぼって表示できるので、検索キーワードの季節変動も読み取れます。</li>
	<li>トレンド1000<br/>上位1,000位までの検索キーワードの過去12ヶ月間の傾向が折れ線グラフで表示されます。さらにその検索キーワードと一緒に検索された副キーワードのトップ20が棒グラフで表示されます。</li>
	<li>0件ヒット<br/>「0件ヒット」を起こしたクエリ（検索結果を表示できなかったクエリ）の過去12ヶ月間の検索回数が棒グラフで表示されます。「0件ヒット」の発生はサイト訪問者の検索ニーズに応えられなかったことを示します。0件ヒットを減らすことは、サイト訪問者の満足度を高め、ECサイトではコンバージョン率の向上に寄与します。</li>
</ul>
</p>

<p>soleami開発チームは今後も開発を継続し、クエリログをさまざまな切り口から視覚化できるように機能を向上させていきたいと考えています。</p>

<br/>
<h5>soleamiの名前の由来</h5>
<p>soleamiは“ami du soleil”（太陽の友人）というフランス語からの造語です。solarと一字違いのSolrにはもともと太陽の意味がありました。soleamiをSolrの友達のように常にそばに置いて使ってもらいたいという願いが込められています。
</p>

<br/>
<h5>Apache Solrについて</h5>
<p>オープンソース・ソフトウェアを開発・管理する非営利団体Apache Software Foundationが開発しているOSSの検索エンジンです。SolrはHadoopの創始者であるDoug Cutting氏が開発したApache Luceneをベースにしています。<br/>
<a href="http://lucene.apache.org/solr/" title="Apache Solr" target="_blank">http://lucene.apache.org/solr/</a>
</p>

<br/>
<h5>株式会社ロンウイットについて</h5>
<p>Apache Lucene/Solrを企業・学校等に導入する支援事業を展開しています。Solrの導入時コンサルティングの他、Solrの教育サービスやサポートサービスなども提供しています。代表の関口はApache Lucene/Solrのコミッターも務めています。<br/>
<a href="http://www.rondhuit.com/" title="株式会社ロンウイット" target="_blank">http://www.rondhuit.com/</a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/%e3%83%97%e3%83%ac%e3%82%b9%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9-apache-solr%e3%81%ae%e3%82%af%e3%82%a8%e3%83%aa%e3%83%ad%e3%82%b0%e5%8f%af%e8%a6%96%e5%8c%96%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[インタビュー] Solr 3.5 トレーニングコース受講者 Cloudera 田澤孝之 さん</title>
		<link>http://www.rondhuit.com/%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc-cloudera-%e7%94%b0%e6%be%a4%e5%ad%9d%e4%b9%8b-%e3%81%95%e3%82%93.html</link>
		<comments>http://www.rondhuit.com/%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc-cloudera-%e7%94%b0%e6%be%a4%e5%ad%9d%e4%b9%8b-%e3%81%95%e3%82%93.html#comments</comments>
		<pubDate>Thu, 09 Feb 2012 14:41:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[テクノロジ]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1199</guid>
		<description><![CDATA[Solr 3.5 基礎の定期開催トレーニングコースを受講されました、米Clouderaディレクターの田澤さんに、受講後のインタビューに応じていただきました。 Clouderaについて ロンウイット関口「Clouderaと &#8230;]]></description>
			<content:encoded><![CDATA[Solr 3.5 基礎の定期開催トレーニングコースを受講されました、米Clouderaディレクターの田澤さんに、受講後のインタビューに応じていただきました。

<h4>Clouderaについて</h4>
<strong>ロンウイット関口</strong>「Clouderaという会社について教えてください」<br/>
<strong>Cloudera田澤</strong>「2008年10月に創業したHadoopの専業ベンダーです。CDH（Cloudera&#8217;s Distribution including Apache Hadoop）やCloudera Managerという製品を持っています。もちろんHadoopに関連したコンサルティングやサポート、教育も行っています。Hadoop創始者のDougは2009年前半にJoinしました」<br/><br/>

<div id="attachment_1233" class="wp-caption alignright" style="width: 487px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/d433e4f7fc11b7e9aa88595c369a9a1b.png" alt="Cloudera 田澤孝之 さん" title="Cloudera 田澤孝之 さん" width="477" height="366" class="size-full wp-image-1233" /><p class="wp-caption-text">Cloudera 田澤孝之 さん</p></div>

<strong>関口</strong>「Hadoopのディストリビューターというと他にもあるようですが、Clouderaの特徴はなんでしょうか」<br/>
<strong>田澤</strong>「MapRやHortonworksですね。MapRはAPIはHadoop互換を謳っていますが、足回りをC/C++で再実装していて高性能を武器にしているようです。HortonworksはYahoo!からスピンアウトした人たちが立ち上げた会社で、できてまだ日が浅く、GAになっている製品がありません。Clouderaはコミュニティで開発されたHadoop 1.0（0.20系）を使っており、「オレオレバージョンではない」「すでにYahoo!で数千ノードで稼働している」という実績があるのが特徴です。もっとも、調査会社のForresterによれば、Amazon（Elastic MapReduce）やIBM（InfoSphere）、EMC（Greenplum）がうちも含めた前述の会社よりHadoopのEnterprise市場で影響力のある会社として評価されているようです（笑）」<br/><br/>
<strong>関口</strong>「Clouderaにおいて田澤さんはどのような業務を担当していますか」<br/>
<strong>田澤</strong>「日本でのビジネスの立ち上げやClouderaの普及です」<br/><br/>

<h4>トレーニングコース受講の動機</h4>
<strong>関口</strong>「今回トレーニングコースを受講していただいた動機はなんでしょうか」<br/>
<strong>田澤</strong>「関口さんもご存知の通り、DougはLuceneの創設者でもあり、Hadoopと検索は近しい関係にあります。DougはLuceneを開発した後、Webクローラーを搭載したNutchを開発しました。しかし、Web相手だとなかなかスケールしない。そこにGoogleの論文が発表され、そのアイディアをNutchに適用しようと考えました」<br/><br/>
<strong>関口</strong>「HDFSとMapReduceですね」<br/>
<strong>田澤</strong>「当時はHDFSではなくNDFSと呼んでいました。Dougいわく、「2年間パートタイムで開発した」とのことです。そしてNutchをその上にポーティングしたところ、みごとにスケールしたと」<br/><br/>
<strong>関口</strong>「その後Hadoopが独立したわけですね」<br/>
<strong>田澤</strong>「はい。そんなわけで大規模データを加工するHadoop、そのReduceプロセスの出力を保存して検索するLucene/Solrは、大規模データを扱うアプリケーションで一緒に使うことが自然です。また私自身FASTという検索エンジンの会社に在籍していたことがあり、OSSの検索エンジンに興味があったため、今回受講しました」<br/><br/>

<h4>トレーニングコースを受講しての感想</h4>
<strong>関口</strong>「受講してみてどうでしたか」<br/>
<strong>田澤</strong>「コンテンツはきめ細かく充実しています。演習も多く入っていて、いいコースです」<br/><br/>
<strong>関口</strong>「ありがとうございます」<br/>
<strong>田澤</strong>「ただコンテンツが充実している分、講義が駆け足的になっていてそれが残念ですね。私は昔BEAシステムズ（現オラクル）という会社でWebLogic Serverの教育コースの講師をしていましたが、その経験からいっても基礎コースでも2日に分けてもいいのではないかと思います」<br/><br/>
<strong>関口</strong>「わかりました。近々4.0へのメジャーバージョンアップがあるので、参考にさせていただきます。ところで田澤さんは元FAST社員ということでおうかがいしますが、SolrはFASTと比べてどうでしょうか」<br/>
<strong>田澤</strong>「私が在籍していたのは４〜５年前なのであくまでも当時のバージョン（Fast ESP5.1）前提での話になりますが、Solrは基本機能レベルでは互角以上といっていいでしょう。ただ、インデックス作成のスケールアウト性、セキュリティ、管理GUIコンソールはFASTの方が上ですね」<br/><br/>

<h4>HadoopとSolrの今後について</h4>
<strong>関口</strong>「HadoopとSolrは今後どのように絡んで使われていくことになりそうでしょうか」<br/>
<strong>田澤</strong>「やはりHadoopは特にテレコム業界でBI（Business Intelligence）やBA（Business Analysis）のためのデータ加工・分析で今後も使われていくでしょう。Solrとは広告業界等でのレコメンデーションやSentiment Analysisをアプリケーションで行う際に、やはりHadoopが使われると思います。いずれにしろ今後もデータは増える一方なので、HadoopとLucene/Solrはいろいろな分野で組み合わせて使われるはずですし、ユーザーの皆様から面白い活用事例が聞けることを楽しみにしています」<br/>
<strong>関口</strong>「本日はお疲れのところ、インタビューにおつきあいくださいましてありがとうございました」<br/>
]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc-cloudera-%e7%94%b0%e6%be%a4%e5%ad%9d%e4%b9%8b-%e3%81%95%e3%82%93.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[インタビュー] Solr 3.5 トレーニングコース 受講者 ユニバーサルナレッジ 勝又尚人 さん</title>
		<link>http://www.rondhuit.com/%e3%83%a6%e3%83%8b%e3%83%90%e3%83%bc%e3%82%b5%e3%83%ab%e3%83%8a%e3%83%ac%e3%83%83%e3%82%b8-%e5%8b%9d%e5%8f%88%e5%b0%9a%e4%ba%ba-%e3%81%95%e3%82%93.html</link>
		<comments>http://www.rondhuit.com/%e3%83%a6%e3%83%8b%e3%83%90%e3%83%bc%e3%82%b5%e3%83%ab%e3%83%8a%e3%83%ac%e3%83%83%e3%82%b8-%e5%8b%9d%e5%8f%88%e5%b0%9a%e4%ba%ba-%e3%81%95%e3%82%93.html#comments</comments>
		<pubDate>Wed, 08 Feb 2012 11:50:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[テクノロジ]]></category>

		<guid isPermaLink="false">http://www.rondhuit.com/?p=1202</guid>
		<description><![CDATA[Solr 3.5 基礎／応用／データインポートハンドラの3日間の定期開催トレーニングコースを受講されました、ユニバーサルナレッジ株式会社の勝又尚人さんに、受講後のインタビューに応じていただきました。 ユニバーサルナレッジ &#8230;]]></description>
			<content:encoded><![CDATA[Solr 3.5 基礎／応用／データインポートハンドラの3日間の定期開催トレーニングコースを受講されました、<a href="http://universal-knowledge.jp/">ユニバーサルナレッジ株式会社</a>の勝又尚人さんに、受講後のインタビューに応じていただきました。<br/><br/>

<h4>ユニバーサルナレッジについて</h4>
<strong>ロンウイット関口</strong>「ユニバーサルナレッジ（以下、ユニナレ）という会社について教えてください」<br/>
<strong>ユニナレ勝又</strong>「ちょうど1年前に設立された、ECサイトの改善をお手伝いする会社です。私自身は2ヶ月前にJoinしたばかりです」<br/><br/>

<div id="attachment_1205" class="wp-caption alignright" style="width: 490px"><img src="http://www.rondhuit.com/wordpress/wp-content/uploads/7d9a0887927bcfc6096d19aa9f337092-480x403.png" alt="ユニバーサルナレッジ 勝又尚人さん" title="ユニバーサルナレッジ 勝又尚人さん" width="480" height="403" class="size-medium wp-image-1205" /><p class="wp-caption-text">ユニバーサルナレッジ 勝又尚人さん</p></div>

<strong>関口</strong>「その前は何をしていましたか」<br/>
<strong>勝又</strong>「その前はヤフーの検索事業部というところで、ログの集計を担当していました。ユニナレの創業者で社長の井上が元ヤフーで検索事業部長をしていて私の上司でした。井上はその後、バイドゥの社長を経てユニナレを設立しました」<br/><br/>
<strong>関口</strong>「勝又さんはユニナレではどんな業務を担当していますか」<br/>
<strong>勝又</strong>「ユニナレでもログ集計を中心にですが、少人数なのでなんでもやっています。もちろん、検索も」<br/><br/>
<strong>関口</strong>「ログ集計というと世の中Hadoopがはやっていますが、やはりHadoopを使っているのですか」<br/>
<strong>勝又</strong>「いいえ、Hadoopを使うほどデータ量も大きくないので、PerlやPythonでやっています」<br/><br/>
<strong>関口</strong>「ユニナレのECサイトの改善というのは、具体的にどのようなものですか」<br/>
<strong>勝又</strong>「検索を中心としたコンサルティングです。たとえばヨドバシカメラ様では、検索語のサジェスチョンやランキングの改善を行いました。ランキングを改善する前はプリンターを検索すると、プリンターの消耗品が先に表示されてしまっていましたが、改善後はきちんとプリンター本体が先に表示されるようになりました」<br/><br/>

<h4>トレーニングコース受講の動機</h4>
<strong>関口</strong>「今回トレーニングコースを受講していただいた動機はなんでしょうか」<br/>
<strong>勝又</strong>「ユニナレではサジェストサーバーや他の案件の商品検索でもSolrを多用していて、きちんと体系的に学びたいと思ったからです。特に運用周り。たとえばSolrを使っていてエラーが発生したとき、表示されたエラーメッセージでGoogleを検索すると、同じエラーに遭遇した人の解決策が検索できて問題を解決することはできます。でも結局、それはその場しのぎ。それが正解なのかわからないし、なぜそうすると問題がなくなるのか、本当のところはわかりません。体系的に学べばエラーの原因が早くわかるようになり、解決方法が見つけやすくなります。Solrを日常的に使っているコンサルタントのノウハウや知見も得られるだろうという期待もありました」<br/><br/>

<h4>トレーニングコースを受講しての感想</h4>
<strong>関口</strong>「受講してみてどうでしたか」<br/>
<strong>勝又</strong>「体系的に学ぶといったことや、コンサルタントのノウハウや知見が得られるだろうという目的は達成できたと思います。あと、講義時間に比べてテキストの内容が多いですね。残念なことにスキップされた部分が結構ありました」<br/><br/>
<strong>関口</strong>「時間が余ることを恐れて、内容を盛り込みすぎたところは正直あります。時間が余るよりいいだろうと（笑）。スキップしてしまった演習はぜひ自社でやっていただき、不明点は「受講後1ヶ月間のアフターサポート」サービスを利用して、ご質問いただきたいと思います」<br/>
<strong>勝又</strong>「あと、<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774141755/">「Apache Solr 入門」（技術評論社）</a>はSolr 1.4対応ですが、Senが使えなくてはまりました。トレーニングコースでは最新の3.5で講義が行われ、lucene-gosenでスムーズに演習ができました。それから新しい発見もいろいろありました。dismaxクエリも知りませんでしたし、ファセットを使った絞り込み検索もよく理解できました。残念だったのは、パフォーマンスチューニングが含まれていないことです」<br/><br/>
<strong>関口</strong>「内容が多いので入れることができませんでした。Solrのキャッシュの使い方について演習付きで詳しく解説しているので、そこから発展させればわかるでしょう、という立場です。実際には難しいとは思いますが。もし必要になったら、コンサルティングをご依頼ください（笑）」<br/>
<strong>勝又</strong>「了解しました（笑）」<br/>
<strong>関口</strong>「本日はお疲れのところ、インタビューにおつきあいくださいましてありがとうございました」<br/>
]]></content:encoded>
			<wfw:commentRss>http://www.rondhuit.com/%e3%83%a6%e3%83%8b%e3%83%90%e3%83%bc%e3%82%b5%e3%83%ab%e3%83%8a%e3%83%ac%e3%83%83%e3%82%b8-%e5%8b%9d%e5%8f%88%e5%b0%9a%e4%ba%ba-%e3%81%95%e3%82%93.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

