CLOVER🍀

That was when it all began.

Lucene

Apache LuceneでkNN検索とANN+HNSWを使い分ける(Codecを使ったHNSWのパラメーター設定付き)

これは、なにをしたくて書いたもの? 前にApache Luceneでベクトル検索(kNN検索)を試してみました。 Apache Luceneでベクトル検索(kNN検索)を試す - CLOVER この後でANNに関係するHNSWのパッケージやクラスがあるのを見つけたので、今回はこちらを扱って…

Apache Lucene 9.0.0でRAMDirectoryが削除されていたという話(代わりにByteBuffersDirectoryを使う)

これは、なにをしたくて書いたもの? 前に、こういうエントリーを書きました。 Apache Luceneでベクトル検索(kNN検索)を試す - CLOVER 自分はApache Luceneで簡単なプログラムを書く時に、インデックスの保存先をインメモリーにすることが多いのですが、そ…

Apache Luceneでベクトル検索(kNN検索)を試す

これは、なにをしたくて書いたもの? ElasticsearchやApache Solrではベクトル検索ができるようです。となると、Apache Luceneにその基礎があるはずなので、ちょっと 見ておこうかなと思いまして。 今回はkNN検索を対象としているのですが、ANNに切り替わる…

Infinispan 14.0の新しいインデックス用のアノテーションをHot Rodで試す

これは、なにをしたくて書いたもの? Infinispanで全文検索インデックスを使用する場合、Cacheに保存するエントリーの各プロパティに対してHibernate Searchの アノテーションを使用して設定を行っていました。 これがInfinispan 14.0で、Infinispan自身がイ…

Apache LuceneのFlexible Query Parserを試す

Apache Luceneでちょっと気になっていた機能として、Flexible Query Parserがあります。org.apache.lucene.queryparser.flexible.core (Lucene 6.5.1 API)Apache LuceneのQueryParserといえば、Classic Query Parserです。org.apache.lucene.queryparser.cla…

Lucene KuromojiでN-Best解を求める

Lucene 6.0から、KuromojiにN-Best解を求めることができる機能が入っていたそうです。Lucene Change Log[LUCENE-6837] Add N-best output capability to JapaneseTokenizer - ASF JIRAmoco(beta)'s backup: Hello Lucene 6.0! その1:PointValues を使って…

Apache Geodeで、Apache Luceneのインデックスとクエリを使う

Apache Geodeの1.0.0-incubating.M2で、Apache Luceneへの対応モジュールがひっそりとリリースされていました。特にこちらやAnnouncing Apache Geode Milestone Releases 1.0.0-incubating M1 & M2 – Seeking Testers : Apache GeodeRelease Notesには載って…

LuceneのDoc Valuesを調べてみる

Elasticsearch 2.0で、Doc Valuesというものがデフォルトで有効になったよ、という話がありました。2.0.0-beta1 Release Notes | Elasticsearch Reference [2.1] | ElasticEnable doc values by default, when appropriate by rjernst · Pull Request #10209…

ElasticsearchのSuggesterで、サジェストを試してみる

ファセットに続いて、サジェストをElasticsearchで試してみようと思います。Elasticsearchでは、Suggesterというものを使うことになるみたいです。Suggesters | Elasticsearch Reference [6.4] | Elastic参考になりそうなエントリも、ちらほらと。RailsでEla…

ElasticsearchのAggregationsでファセットっぽいことをする

Elasticsearchでファセットをやりたかったら、Aggregationsというものを使用するらしいですね。要は集計処理らしいです。Aggregations - ファセットよりも柔軟な集計 - @johtaniの日記 2ndAggregations | Elasticsearch Reference [6.4] | Elasticここは押さ…

Jest+Groovyで、ElasticsearchにBulk Load

ちょっとタイトルと中身が微妙に合わないのですが…。 ※読むとなんとなくわかるかもしれませんが、別にこの用途で必ずしもBulkである必要はなかったり…例えば、こういうJSONファイルをElasticsearchに一括ロードしたいと思いまして。 data.json [ { "isbn": "…

Elasticsearch 2.2.0で追加されたAnalyze API(explain=true)を試す

Elasticsearchに、Analyze APIというものがあるらしいです。Analyze | Elasticsearch Reference [2.2] | Elasticテキストを、Analyze(単語分割)した時の結果が分かるAPIみたいです。これ、Solrの管理UIで同じような機能がTokenizerやFilterが適用されてい…

Elasticsearch 2.xをEmbeddedableに使う

この前、初めてこのブログでElasticsearchを使ったのですが、次はEmbeddedに使ってみようかなと思いまして。…正直、いきなりそんなことするもんじゃないなぁと後で思いましたけど。基本的には、Java APIのドキュメントを見ていけばいいみたいです。Java API …

Ubuntu LinuxにElasticsearch 2.1とKuromojiをインストールする

そろそろ、Elasticsearchを少しずつ触っていってみようかと思いまして。とはいえ、自分はあんまり検索エンジンはやったことがないので、まあ気ままにマイペースで試していけたらなぁと思っています。一応、LuceneおよびHibernate Searchは趣味的に遊んだこと…

組み込みSolr(EmbeddedSolrServer)を使う

組み込みで使える全文検索エンジンってないのかなぁと思っていたところ、Apache SolrにEmbeddedSolrServerなるものがあると知りまして。参考) EmbeddedSolrSolrjUsing SolrJ | Apache Solr Reference Guide 6.6Apache Solr を組み込み実行 - なんとなくな D…

CodeLibs Lucene Kuromoji+mecab-ipadic-NEologdを使う

Lucene Kuromoji+mecab-ipadic-NEologdのエントリを見かけるようになりましたが、個人的にちょっと気になるところがありまして。Maven依存関係にこれを足せば使えるよ、というエントリを見かけますが <dependency> <groupId>org.codelibs</groupId> <artifactId>elasticsearch-analysis-kuromoji-neologd</artifactId></dependency>…

Apache Solrで、ユニークキーをAnalyzeしているとユニークにならない時があるという話

たまたまスキーマ定義がそうなってて、ちょっとハマったのでメモ。Apache Solrのユニークキーで使用するフィールドですが、この値が重複しているはずなのにドキュメントがユニークにならなくて困ったという話です。schema.xmlは、以下とします。 <field name="id" type="text_ja" indexed="true" stored="true" required="true" multiValued="false" /> <uniqueKey>id</uniqueKey> 「_vers</field>…

Apache Solrで、curlを使ってコアをリロードする

以下のコマンドで。 $ curl 'http://localhost:8983/solr/admin/cores?action=RELOAD&core=[コア名]' <response> <lst name="responseHeader"><int name="status">0</int><int name="QTime">186</int></lst> </response> その他のコマンドは、こちら。CoreAdmin API | Apache Solr Reference Guide 6.6CoreAdm…

Apache Solrで、実は後方一致(WildcardQuery)ができるという話

今までずっとSolr(というかLucene)で、ワイルドカードによる後方一致はできないものだと思っていたのですが、どうやらそうではないようです。最近、Solrで後方一致のクエリを投げている人が近くにいて、「使えるの?」と聞いてみたら「動いてますよー」と…

Apache Solr 5.xでFunction Query

Apache Solrを使っていて、ちょっと独自ソートをしたいみたいなことがありまして。通常は価格みたいなフィールドでソートするんですけど、ある期間だけ別のフィールドでソートする、みたいな。キャンペーン的なやつですね。で、こういうことをしたい場合、So…

Apache Solr 5.xのJSON Facet APIを、Solrjでちょっと強引に動かす

前にApache Solr 5.xでファセットを使ってみるエントリを書いたのですが、これをSolrjでやりたいと思いまして。Apache Solr 5.xでファセットを試す - CLOVERJSON Facet APIというのは、こちらで紹介されているAPIです。Solr JSON Facet API以前のファセット…

Apache Solr 5.x/crawler4j/Apache Tikaを使って、HTMLとPDFをクローリングしてインデックスを作る

これまでに、Apache Solrとcrawler4jでHTMLをクローリングしてインデックスするのと、Apache Tikaを使ってPDFを読んでみるエントリを書いてみました。Apache Solr 5.x+crawler4jで、Webサイトをクロールしてインデックス化する - CLOVERApache TikaでPDFを…

Apache Solr 5.xでピボットファセットを試す

以前、Apache Solrでファセットを使ったエントリを書きました。Apache Solr 5.xでファセットを試す - CLOVERこの時は気付いていなかったのですが、Solr 4からピボットファセット(Pivot (Decision Tree) Faceting)なるものが追加されているらしいです。Pivo…

Apache Solr 5.xでファセットを試す

Apache Solrで、ファセットを試してみました。やろうやろうと思っていたのですが、なかなか取り組めていなかったので。ファセットって何?という話もありますが、単語やクエリ、範囲に対する件数を返す機能です。tree-tips: solrjでfacet query検索 | Apache…

Apache Solr 5.xのレプリケーションを、Docker Composeを使って試す

Docker Composeを試してみたので、これを使ってApache Solrのレプリケーションを構成してみたいと思います。Index Replication | Apache Solr Reference Guide 6.6Solrのレプリケーションは、マスターとスレーブがあって、それぞれの設定をsolrconfig.xmlに…

Luceneでレーベンシュタイン距離を求める

先日、Apache Solrを使った「もしかして検索」や単語のサジェストみたいなところを調べていて、「レーベンシュタイン距離」なるものがあることを知りました。レーベンシュタイン距離 - Wikipediaこのあたりも参考になりました。編集距離 (Levenshtein Distan…

Apache Solr 5.xのSuggesterを使って、サジェストとDid You Mean?

先ほど、こんなエントリを書きました。Apache Solr 5.xで、サジェストを実装することを考える http://d.hatena.ne.jp/Kazuhira/20150912/1442047726これを書く時にSuggesterをいったん置いておいてEdgeNGramにチャレンジしましたが、そもそもこちらのルート…

Apache Solr 5.x+crawler4jで、Webサイトをクロールしてインデックス化する

Apache Solrを使った、Webクローリングと全文検索をどうやってやろうかなぁ〜と思いまして。OSSのクローラーっていくつかあると思うんですけど参考) Comparison of existing open-source tools forWeb crawling and indexing of free Music http://ja.scrib…

Apache Solr 5.xで、サジェストを実装することを考える

ちょっと、Apache Solrを使ってサジェストを作ることを考えていまして。こちらの本ですと、SpellCheckComponent/Suggesterが紹介されています。[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)作者: 大谷純,阿部慎一朗…

Apache Solr 5.xで、コアの作成からサンプルドキュメントの登録まで

前回のエントリで、Apache Solrのインストールをやったので、今度はコアの作成とサンプルのドキュメントを登録してみます。Solrでは、コアという単位で設定やインデックスの保持を行うみたいですね。以降の操作の前提として、Solr 5.3.0のインストールディレ…