SlideShare a Scribd company logo
Enviar búsqueda
Cargar
Iniciar sesión
Registrarse
Lucene 6819-good-bye-index-time-boost
Denunciar
Koji Sekiguchi
Seguir
RONDHUIT Co.,Ltd. - Founder & CEO en RONDHUIT Co.,Ltd.
25 de Aug de 2017
•
0 recomendaciones
•
2,080 vistas
1
de
10
Lucene 6819-good-bye-index-time-boost
25 de Aug de 2017
•
0 recomendaciones
•
2,080 vistas
Descargar ahora
Descargar para leer sin conexión
Denunciar
Internet
LUCENE-6819 & LUCENE-7730 の背景説明
Koji Sekiguchi
Seguir
RONDHUIT Co.,Ltd. - Founder & CEO en RONDHUIT Co.,Ltd.
Recomendados
JBoss AS7
nekop
3K vistas
•
37 diapositivas
aws_opsworks
Yukihiko SAWANOBORI
4.3K vistas
•
93 diapositivas
cloudpack導入資料(2011/05/06版)
iret, Inc.
456 vistas
•
20 diapositivas
20221209-ApacheSolrによるはじめてのセマンティックサーチ.pdf
Koji Sekiguchi
90 vistas
•
14 diapositivas
Solr から使う OpenNLP の日本語固有表現抽出
Koji Sekiguchi
3.7K vistas
•
14 diapositivas
Learning-to-Rank meetup Vol. 1
Koji Sekiguchi
2.7K vistas
•
24 diapositivas
Más contenido relacionado
Más de Koji Sekiguchi
An Introduction to NLP4L
Koji Sekiguchi
3.7K vistas
•
55 diapositivas
Nlp4 l intro-20150513
Koji Sekiguchi
7.6K vistas
•
21 diapositivas
コーパス学習による Apache Solr の徹底活用
Koji Sekiguchi
5.3K vistas
•
24 diapositivas
情報検索の基礎からデータの徹底活用まで
Koji Sekiguchi
3.9K vistas
•
39 diapositivas
LUCENE-5252 NGramSynonymTokenizer
Koji Sekiguchi
3.3K vistas
•
7 diapositivas
情報検索におけるランキング計算の紹介
Koji Sekiguchi
3.1K vistas
•
15 diapositivas
Más de Koji Sekiguchi
(20)
An Introduction to NLP4L
Koji Sekiguchi
•
3.7K vistas
Nlp4 l intro-20150513
Koji Sekiguchi
•
7.6K vistas
コーパス学習による Apache Solr の徹底活用
Koji Sekiguchi
•
5.3K vistas
情報検索の基礎からデータの徹底活用まで
Koji Sekiguchi
•
3.9K vistas
LUCENE-5252 NGramSynonymTokenizer
Koji Sekiguchi
•
3.3K vistas
情報検索におけるランキング計算の紹介
Koji Sekiguchi
•
3.1K vistas
系列パターンマイニングを用いた単語パターン学習とWikipediaからの組織名抽出
Koji Sekiguchi
•
2.6K vistas
Luceneインデックスの共起単語分析とSolrによる共起単語サジェスチョン
Koji Sekiguchi
•
1.8K vistas
Html noise reduction
Koji Sekiguchi
•
2.2K vistas
Lucene terms extraction
Koji Sekiguchi
•
8.4K vistas
Visualize terms network in Lucene index
Koji Sekiguchi
•
2.3K vistas
WikipediaからのSolr用類義語辞書の自動生成
Koji Sekiguchi
•
12.6K vistas
HMM viterbi
Koji Sekiguchi
•
15.2K vistas
NLP x Lucene/Solr
Koji Sekiguchi
•
2.5K vistas
OpenNLP - MEM and Perceptron
Koji Sekiguchi
•
5.1K vistas
自然言語処理における機械学習による曖昧性解消入門
Koji Sekiguchi
•
8.9K vistas
Similarity functions in Lucene 4.0
Koji Sekiguchi
•
8.5K vistas
Pre rondhuit-naming-story
Koji Sekiguchi
•
6.2K vistas
Lu solr32 34-20110912
Koji Sekiguchi
•
3.2K vistas
Lucene/Solr 3.1
Koji Sekiguchi
•
1.7K vistas
Lucene 6819-good-bye-index-time-boost
1.
LUCENE-6819 Good bye index-time
boost 8/24/17 Koji Sekiguchi @kojisays
2.
LUCENE-6819による変更 • Lucene/Solr 6.5.0
にて関連するコードが @deprecated にマークされた。また、データ投入 時にboost!=1.0の値が指定されていると、警告が表 示される。 • Lucene/Solr 7.0.0 にて、インデックス時重み指定 ができなくなり、参照している部分も削除された。
3.
背景 • 旧DefaultSimilarityの実装に強く依存していた。 • fieldNorm
= lengthNorm * boost • fieldNormが1バイトのfloatでインデックスに保存されており、低精度。boostはコン トロールしようがないが、これが取り除ければ0 <= fieldNorm <= 1の範囲で抑える ことができ、精度を高く保つ努力が報われる。 • かつ、ほとんどの人はboostを指定しない。 • (すでにBM25Similarityがデフォルトとなり、オリジナルのBM25にはboostという考 えがなかったが、LuceneのBM25には文書長を考慮する部分にboostが掛けられている という独自実装が入っており、気持ち悪かった・・・というのもあると思われる。) • docValuesにboost値を入れればより高精度に重みを指定できる。
4.
LUCENE-6819 • この修正だけでは、相変わらず低精度のまま(0〜 255の範囲が有効に使えていない(グレー部分)) 〜〜〜〜 1byte (fieldNorm) Float.MAX_VALUE0
1(boostを使わない場合の最大値)
5.
今後のindex-time boost • 今後はdocValuesにブースト値を入れてスコアに加味す る。 •
Luceneの場合:FunctionScoreQuery • Solrの場合:従来のFunctionQuery • 使い方(Solrの場合) • techproductsではweightがdocValuesになっているので 、q=_val_:”product(weight)”などとする。
6.
関連チケット LUCENE-7730 (7.0) lengthNorm のよりよいエンコーディングのための改善。長さ(単語 数)40まではそのままエンコーディングされる(その後徐々にずれる )。BM25Similarityがデフォルトなので、1/sqrt(numTerms)計算後の 値ではなく、numTermsそのものを入れることにした。 LUCENE-7623 (6.5) FunctionScoreQuery と
FunctionMatchQuery の追加。 LUCENE-7377 (提案中) ClassicSimilarityの削除。
7.
omitNormsとの関連 • omitNormsは相変わらず有効。LUCENE-6819で行ったのは、 fieldNorm =
lengthNorm * boost から boost を切り離したこと。相変わ らず fieldNorm = lengthNorm はLUCENE-6819後も低精度でインデッ クスに保存されている。 • boostはどんな値も設定されるので、fieldNormがどんな値になるの か制御できない。 • LUCENE-7730で短い文章においてfieldNormに差がつくように改善し た。 • LUCENE-6819によりboostを切り離したことで、LUCENE-7730の 苦労が報われる。
8.
fieldNorms値の違い • Lucene 7.0 •
〜 Lucene 6.x 87 fieldNorm (1byte) 1000 984 SmallFloat.intToByte4(1000) → 87 SmallFloat.byte4ToInt(87) → 984 104 fieldNorm (1byte) 1000 1024 SmallFloat.floatToByte315(boost/sqrt(1000)) → 104 boost==1のとき、1/sqrt(1000)=0.03162277660168 SmallFloat.byte315ToFloat(104) → 0.031250
9.
SmallFloat a b numTerms SmallFloat.intToByte4(numTer ms) SmallFloat.byte4ToInt(a) SmallFloat.floatToByte315(boost/ sqrt(numTerms)) SmallFloat.byte315ToFloat(b) 0 0
0 1 1 1 124 1.000000 2 2 2 121 0.625000 3 3 3 120 0.500000 4 4 4 120 0.500000 : : : : : 40 40 40 113 0.156250 41 40 40 112 0.125000 42 41 42 112 0.125000 43 41 42 112 0.125000 : : : : : 1000 87 984 104 0.031250 7.0(LUCENE-7730) 〜 6.x
10.
LUCENE-7730 • fieldNormを有効に使う修正 〜〜〜〜 1byte (fieldNorm) Integer.MAX_VALUE0 40