ぽかぽかウンティの自由帳

ぽかぽか動物園から投稿します。

Apache Solr のクエリビルダー Gem を作成した

LSolr という Apache Solr の標準クエリパーサー用のクエリビルダーライブラリを作成した。

RSolr とセットで使うことを意識して LSolr と命名した。左右のLR的な。L は Lucene の L と思えば違和感はない気がする。

Apache Solr の標準クエリはただの文字列でシンプルなので、こんな抽象化なんて本来はしなくて良いのだが、例えばWebの検索UIで色々な条件を指定できる複雑な検索パネルとかが絡んで来ると、単純な文字列操作だけでは実装が厳しくなってくる。

そこで Apache Solr にとっての予約語エスケープや意味のある記号の除去、および複数クエリ断片の合成機能を有するようにした。

実装的には、内部で LinkedList 型のデータ構造を保持する Composite パターンを選択した。

それでも結果的には、ただの文字列を作成するだけなので他の Gem に依存することなくピュア Ruby の1クラスに納まった。でもやっぱ ActiveSupport くらいは使いたかった感ある...

しかし Apache SolrElasticsearch に比べて過疎ってる感があるので、おそらく自分だけが使い、永遠に枯れることはないだろう...