文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

solr

世界測地系DMS・DEG形式、日本測地系DMS・DEG形式の4パターンでプロットする方法

地図のお話ですよ〜

【solr】地図検索で超高速にまとめ表示を実現する実装方式【elasticsearch】

一瞬何のことか?と思った方は↑の画像を見て下さい。これです。 位置情報検索を利用して、一定の範囲内に該当するデータが何件あるかをまとめて表示する機能の事です。この画像ではgoogle map clusterを使った例ですが、clusterを使わず、超高速に位置情報検…

solrのkuromojiで全角数値の検索をヒットさせる

kuromojiでもlucene-gosenでも、初期設定のままだと全角数値が検索にヒットしません。 そこで対応するための設定と、どういう挙動になるかについて調べました。 内容的にこのブログに書くのが勿体無いので、tree-tipsにまとめました。以下を参照して下さい。…

何故MySQLは中間・後方一致検索でインデックスが効かないのか

しょうもないトピックです。 MySQLは何故中間一致検索、又は後方一致検索するとフルスキャンしてしまうか解りますか? 簡単です。中間部分の索引を保持しても効率よくbtreeを辿れないからです。例えば現実世界の辞書を想像して下さい。 おまわりさんーーーー…

solrのReplicationHandlerのmaxNumberOfBackupsの罠

solrには非常に簡単にレプリケーション(データの複製・同期)をする仕組みがあります。 ReplicationHandlerというものを使うと、http通信をして簡単にレプリケーションができます。 古いsolrではssh + rsyncで頑張って行うタイプのレプリケーションでしたが…

solrjでSpatialSearchする時のgeodist()のソート方法の罠

先日tree-tipsでsolrのSpatial Searchによる空間検索についての記事をアップしました。 tree-tips: solrでSpatialSearchするためのschema.xml設定(LatLonType) | Apache Solr 今回はsolrjからSpatial Searchをしようと色々試したのですが、geodist()による距…

solrのElevationコンポーネントのelevatedの取得方法が残念な件

先日Spatial Searchを勉強したので、 今回は息抜きにElevation Componentを勉強中です。elevationを使った最初の感想は・・・ 「solrjでどうやってelevateを扱うのかが解らない」 elevationに限った話じゃないんですが、solrjと絡めると途端に「あれ?どうや…

solrのSpatialSearch:第1回:schema.xmlの設定、をアップしました

予告していたsolrのSpatialSearchの記事をtree-tipsにアップしました。 tree-tips: solrでSpatialSearchするためのschema.xml設定(LatLonType) | Apache Solr基本的にsolr wikiにはちょっとしか説明が書いてないので、理解し難いです。 特に内部的に自動で生…

solrの空間検索(Spatial Search)をtree-tipsにまとめていきます

最近急激に空間検索の需要が伸びている気がします。業務でもいくつか空間検索は既に導入していますが、 今のところ緯度と経度をbetweenで検索する実装しか経験がありません。 between検索は、以下の黑★の2点を抽出する事ができれば検索できます。 ☆ーー★ | …

solrのNGramTokenizerFactoryの罠

solr1.4でN-Gramで検索したいと思い、以下をschema.xmlに追加しました。 <fieldtype name="ngram" class="solr.TextField" omitNorms="false"> <analyzer> <tokenizer class="solr.NGramTokenizerFactory" maxGramSize="3" minGramSize="2" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>…</filter></tokenizer></analyzer></fieldtype>

solrのインデックス生成が遅いのは形態素解析が遅いのが原因?

全文検索エンジンのインデックス生成が遅いのはもはや常識ですね。 しかし具体的にどこが遅いんだろうと考えていたんですが、 今まではただ漠然と以下を怪しんでいました。 インデックス生成時に発行するSQL storedフィールドの数 indexedフィールドの数 形…

solrのrollbackはRDBのrollbackとは挙動が違う

solrにはrollbackの機能があります。 ところがRDBと全く同じrollbackではありません。例えばインデックス全件生成を例に上げてみます。1,インデックス全件削除。 2,インデックス全件生成。 3,全件生成中にエラー発生。 4,catch節でrollbackを実行。…

「solrが解らないので実装できません」という言い訳が多い件

solrに限った話ではありませんが、 最近「solrが解らないので実装できない・見積もりできない」という言い訳を沢山耳にします。このセリフを吐く人は大抵solr以外の事もほとんど解ってないです。 solrが解らないから他も解らない事にしたいのか、と思ってし…

何故あなたはsolrが動かせないのか

solrが動かない!! 手順通りやってみたけど大量にエラーがでる! せっかくsolrに興味があってもエラー出まくりでやる気が削がれ、諦めた方も多いのではないでしょうか。最近solrのバージョン1.3から1.4に上げる作業をしたんですが・・・ エラー出すぎて魂抜…

org.apache.lucene.index.CorruptIndexException: Unknown format version: -9

solrの例外エラーについて。 致命的: java.lang.RuntimeException: org.apache.lucene.index.CorruptIndexException: Unknown format version: -9 このエラーですが、solrのバージョンアップをする時に起きる場合があります。 エラーの内容は、インデックス…

solr4.0から導入された_version_フィールド

solr4.0がリリースされたので、早速使ってみました。 早速起動時に躓きました。。 致命的: Unable to use updateLog: _version_field must exist in schema, using indexed="true" stored="true" and multiValued="false" (_version_ does not exist) org.ap…

solrで緯度経度をボックス検索する

solrに限った話ではありませんが、 最近緯度・経度を使って、ボックス(四角形の範囲内)検索をする要件が増えています。 方法はいくつかありますが、やりやすい方式を上げてみます。 緯度をbetween検索、かつ、軽度をbeween検索。 この方式が一番汎用性があ…

solr3.6:solrj3.6を使う時に不足しているjar

引き続きsolr3.6のお話。今回はsolrjの話です。 solrjでConcurrentUpdateSolrServerを使ってみたんですが、 apache-solr-3.6.0.zip の内包されたjarだけじゃ足りないようです。 String solrServerUrl = "http://localhost:8080/solr-test/core1/"; int queue…

solr3.6の起動時のエラー:org.apache.solr.common.SolrException: undefined field text

solr3.6をダウンロードして、 example └solr └conf のconfを使用していて、tomcatを起動すると、以下のエラーが発生します。 致命的: org.apache.solr.common.SolrException: undefined field text なんだろうこれは。 schema.xmlを見てもよく解りません。ん…

solr3.6のpingのエラー:org.apache.solr.common.SolrException: undefined field text

またこのエラーがでたのでまとめます。 2箇所で「org.apache.solr.common.SolrException: undefined field text」が起きました。solr adminのping solr adminで [ping] を押下すると以下のようなエラーが起きました。 HTTPステータス 500 - Ping query cause…

solrで日本語を扱う

solrで日本語の検索をするには、いくつか設定があります。 tomcatを使う場合の設定をまとめます。1,tomcatの文字コード設定 $TOMCAT_HOME/conf/server.xmlに「URIEncoding="UTF-8" 」という設定します。 <Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> </service></server>

solr3.6で形態素解析のユーザ定義辞書を使用する

前回は同義語の設定をしたので、今回はユーザ定義辞書を使ってみます。まずは辞書も同義語も設定していない状態。 「形態素解析」という文字列を検索したのですが、 クエリー・インデックス共に「形態素」「解析」となってしまいましたね。 ではここから辞書…

solr3.6のkuromojiで同義語を設定

solr3.6、ついにリリースされましたね。 solr3.6になって、atilikaが作っている、 日本語形態素解析機である「kuromoji」が標準搭載される事になりました。 比較的新しく、pure javaなので、senやgosenではなくkuromojiを使っていくといいかと思います。 (l…