Solr supports multiple query syntaxes through its query parser plugin framework. For documentation on the full list of available parser types, see the all subclasses of QParserPlugin in the javadoc, and also the QueryParser wiki page. Specifying a Query Parser Users can specify the type of a query in most places that accept a query string using LocalParams syntax. For example, the following query
日本語の文章に対して全文検索用のインデックスを作成する方法としては、形態素解析により分解した単語をインデックスする方法や、N-Gram によってインデックスを作成する方法などがあります。形態素解析はインデックスが小さく検索が早いこと、N-Gram は業界用語などの特定ドメインの言葉や日本語以外にも対応できて部分一致検索が可能であることなど、双方に利点があります。 今回は Solr を使用した N-Gram 系トークナイザーについて記述します。 N-Gram 検索を行うには Solr コアの schema.xml を開いてフィールド型を定義します。 <fieldtype name="text" class="solr.textField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.CJKTokenizerFac
フリーワード検索以外に、利用者をターゲットの情報までナビゲーションする検索方法として、ディレクトリ検索とファセット検索があります。情報をあらかじめ分類して、利用者をナビゲーションすると言った目的は同じですが、ナビゲーション方法も情報の分類方法も大きく異なります。上の図は、ディレクトリ検索とファセット検索のナビゲーションを図にまとめたものです。 ディレクトリ検索はナビゲーションする順序があらかじめ決まっているため、同じ情報を何度も探すような利用シーンや、他の人へ探す順序を共有しやすい特徴を持っています。その反面、一歩道順を間違えるとターゲットの情報までたどり着けなくなってしまう可能性が高いナビゲーション方法です。複数のディレクトリ階層から同じ情報までの道順を確保すればたどり着く確率は高くなりますが、情報の管理が複雑になります。 ファセット検索はナビゲーションする順序は決まっていないため、利用
Apache Solr includes the ability to set up a cluster of Solr servers that combines fault tolerance and high availability. Called SolrCloud, these capabilities provide distributed indexing and search capabilities, supporting the following features: Central configuration for the entire cluster Automatic load balancing and fail-over for queries ZooKeeper integration for cluster coordination and confi
何かと検索の需要ってあるわけなんですが、その中でもオープンソースで 最もポピュラーなのはApache Solr(http://lucene.apache.org/solr/)だと思います。 メジャーバージョンアップ版の4.0が出てたのは知ってたのですが まだ試していませんでした。 ↓を読んでたら居ても立ってもいられなくなってきたので、やってみましたw 強烈に素晴らしいプロダクトに変貌した Apache Solr – Solr 4.0 登場 | にょきにょきブログ Solr3.6でKuromojiを試した時はTomcatを使いましたが、 今回は本家のチュートリアル↓に沿ってJettyでやってみます。 http://lucene.apache.org/solr/4_0_0/tutorial.html ■ Solrサーバーを起動 $ wget http://ftp.jaist.ac.jp/pub
solrって何? Apache solr solr wiki オープンソースのpure javaの全文検索エンジンです。 Apacheのトッププロジェクトであり、twitterやfacebook級のサイトでも使用されています。 solrにできる事は? 超高速検索のエンジンを自分で作成可能(オレオレMySQLのようなものを作る事ができる)。 検索する項目を自分で定義可能(RDBのカラム)。 定義した項目に、順序を保持したままリスト形式で値を保存可能(カラムにjavaでいうところのListを保存できる)。 完全一致検索可能。 中間一致検索可能(フルスキャンで超低速になるので非推奨)。 前方一致検索可能。 超高速に件数を取得する、ファセット検索が可能。(select count(*)を100回同時に行なっても超高速) 超高速に同義語検索可能で、同義語の辞書を自分で定義可能。(or name =
デフォルトで用意されている Solr の数値型データタイプには、基本形として int, float, long, double の4種類があります。 さらにそれぞれに最初に t, p , s が追加された、tint, pint, sint 等のバリエーションがあります。 schema.xmlのサンプルより抜粋 t ではじまるデータタイプは範囲指定検索( range queries )が高速にできます。範囲指定をよく使うフィールドに使うとよいでしょう。 上記で class="solr.TrieIntField" とあるようにトライ木(Trie)でデータ管理されています。 p と s は古いバージョンとの互換性のために存在しているのであまり気にしなくてもいいかもしれません。 p ではじまるデータタイプは数字を文字列として扱います。ソートすると文字コード順にソートされます。文字列なので範囲指定検
Solrには検索結果をClusteringのような機能がある。 price=10, 20 , .... ,100までの値を持つ 100件のデータ(同じ値を10件もつ) /solr/select/?q=*:*&facet=true&facet.field=price した結果は 10 10 10 10 10 10 10 10 10 10 のようになる。 この結果にprece:10の条件を追加して検索した結果が10件ですよーと表示される。 このように、絞込みのためのナビゲーションが可能になる。 ただ,price(値段)のデータは実際のデータだと 下のようにばらつきのあるデータになるだろう。 10, 20 , .... ,1000までの値を持つ100件のデータに対して同様にリクエストすると 1 1 1 1 1 1 1 1 1 1 ...(略) このようにまったく固まりになってくれない。。。。 そ
Solrへのインデックスの追加/削除などの操作は、XMLやJSONなどのフォーマットのドキュメントをSolrサーバにHTTP POSTすることで行います。 Solrがサポートしているフォーマットには次のものがあります。 XML JSON CSV 他にDataImportHandlerを使うことで、リレーショナルDBからSolrにインデックスを追加することやPDFなどからインデックスを追加することもできるようです。 今回はXMLでのインデックスの追加/削除の方法について説明したいと思います。 2.1 インデックスの追加方法¶ インデックスを追加するにはaddコマンドを送信します。addコマンドのXMLフォーマットは次のようになります。 <add> <doc> <field name="フィールド名">テキスト</field> [<field name="...">...</field>] <
表のような転置インデックス完成後は、クエリに対する結果を返す処理は簡単です。例えば、ユーザーが「Vim」というクエリを発行すると、検索エンジンは「Vim」を含む文書IDリストを返します。表では文書IDの「2」を返します。 検索エンジンを取り巻く7つの技術 検索エンジンのコア技術は前節で紹介したインデックスです。しかし実際に、検索インデックスだけで構成する検索エンジンから、検索サービスを構築するには多大なコストが掛かります。以下の節で検索エンジンを利用したシステム、検索サービスを構築する際に便利なコンポーネントを紹介します。 これらの機能のいくつかは、多くの検索エンジンが組み込んでいます。一方で、簡素な検索エンジンは、以下で紹介するコンポーネントをサポートしていないため、ユーザーが独自に開発するか、その機能を持つコンポーネントを組み込む必要があるものもあります。 【1】トークナイザ 検索エン
ちょっと、アレですね・・・ solrに限った話ではありませんが、最近「solrが解らないので実装できない・見積もりできない」という言い訳を沢山耳にします。 このセリフを吐く人は大抵solr以外の事もほとんど解ってないです。 solrが解らないから他も解らない事にしたいのか、と思ってしまう程に理解していない。 こんなセリフを言ってしまわないように、情報を整理し、思考停止状態に陥らないようにしましょう。 以外の部分が理解できているか確認する solrの何が解らないのかを明確にする インデクサが解らないのかサーチャーが解らないのか solrの制約について 以外の部分が理解できているか確認する そもそもsolr以外は理解できており、問題無いのか。 例えば「solrの事は全く考えなくていいから、他の部分を説明して」と言われた時、説明できるか。説明できなかったらそもそもsolr以外の事を理解する必要が
solr3.6をダウンロードして、 example └solr └conf のconfを使用していて、tomcatを起動すると、以下のエラーが発生します。 致命的: org.apache.solr.common.SolrException: undefined field text なんだろうこれは。 schema.xmlを見てもよく解りません。んんん?? ではsolrconfig.xmlの方かな。ジーーーッと見てみる。 <listener event="newSearcher" class="solr.QuerySenderListener"> <arr name="queries"> </arr> </listener> <listener event="firstSearcher" class="solr.QuerySenderListener"> <arr name="querie
Solr provides a Simple Faceting toolkit which can be reused by various Request Handlers to include a "Facet counts" section within a search response. This extra section provides a breakdown or summary of the results based on some simple criteria, which can be used to help implement more advanced search interfaces. Use of faceting does not affect the results section of a search response. The Search
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く