Skip to content

Instantly share code, notes, and snippets.

View mocobeta's full-sized avatar

Tomoko Uchida mocobeta

View GitHub Profile
# base image
FROM docker.elastic.co/elasticsearch/elasticsearch:7.7.0
# PATH
ENV PATH /usr/share/elasticsearch/bin:$PATH
# work directory
WORKDIR /usr/share/elasticsearch
USER elasticsearch
{
"ア": ["a"], "イ": ["i"], "ウ": ["u"], "エ": ["e"], "オ": ["o"],
"カ": ["ka"], "キ": ["ki"], "ク": ["ku"], "ケ": ["ke"], "コ": ["ko"], "キャ": ["kya"], "キュ": ["kyu"], "キョ": ["kyo"],
"ガ": ["ga"], "ギ": ["gi"], "グ": ["gu"], "ゲ": ["ge"], "ゴ": ["go"], "ギャ": ["gya"], "ギュ": ["gyu"], "ギョ": ["gyo"],
"サ": ["sa"], "シ": ["si", "shi"], "ス": ["su"], "セ": ["se"], "ソ": ["so"], "シャ": ["sya", "sha"], "シュ": ["syu", "shu"], "シェ": ["sye", "she"], "ショ": ["syo", "sho"],
"ザ": ["za"], "ジ": ["zi", "ji"], "ズ": ["zu"], "ゼ": ["ze"], "ゾ": ["zo"], "ジャ": ["zya", "ja"], "ジュ": ["zyu", "ju"], "ジェ": ["zye", "je"], "ジョ": ["zyo", "jo"],
"タ": ["ta"], "チ": ["ti", "chi"], "ツ": ["tu", "tsu"], "テ": ["te"], "ト": ["to"], "チャ": ["tya", "cha", "cya"], "チュ": ["tyu", "chu", "cyu"], "チョ": ["tyo", "cho", "cyo"],
"ダ": ["da"], "ヂ": ["di", "zi", "ji"], "ヅ": ["du", "zu"], "デ": ["de"], "ド": ["do"], "ヂャ": ["dya", "zya", "ja"], "ヂュ": ["dyu", "zyu", "ju"], "ヂョ": ["dyo", "zyo", "jo"],
"ナ": ["na"], "ニ": ["ni"], "ヌ": ["nu"], "ネ": ["ne"], "ノ": ["no"], "ニャ": ["nya"]
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.VectorField;
import org.apache.lucene.index.*;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.KnnGraphQuery;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
@mocobeta
mocobeta / VectorFieldTest.java
Created December 1, 2019 12:32
POC example for approximate knn vector search example (LUCENE-9004)
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Arrays;
import java.util.Random;
@mocobeta
mocobeta / VectorValuesFieldExample.java
Last active April 3, 2021 07:11
PoC example for approximate vector search for Lucene
/**
* PoC Indexing/Querying example code for LUCENE-9004
* @see https://github.com/mocobeta/lucene-solr-mirror/tree/jira/LUCENE-9004-aknn
*/
public class VectorValuesFieldExample {
public static void main(String[] args) {
String indexDir = "/tmp/vector-search";
String vectorField = "vector";
int maxDoc = 100_000;
@mocobeta
mocobeta / 01_preprocess-jp.py
Created October 10, 2017 15:45
Japanese keyphrase extraction by pke
import MeCab
import sys
raw_text_file = sys.argv[1]
preprocessed_file = sys.argv[2]
# preprocess for pke
m = MeCab.Tagger()
with open(raw_text_file) as src:
with open(preprocessed_file, 'w') as dst:
@mocobeta
mocobeta / bocchan_utf8.txt
Created July 30, 2017 13:02
janome.tokenizer profiling
 親譲《おやゆず》りの無鉄砲《むてっぽう》で小供の時から損ばかりしている。小学校に居る時分学校の二階から飛び降りて一週間ほど腰《こし》を抜《ぬ》かした事がある。なぜそんな無闇《むやみ》をしたと聞く人があるかも知れぬ。別段深い理由でもない。新築の二階から首を出していたら、同級生の一人が冗談《じょうだん》に、いくら威張《いば》っても、そこから飛び降りる事は出来まい。弱虫やーい。と囃《はや》したからである。小使《こづかい》に負ぶさって帰って来た時、おやじが大きな眼《め》をして二階ぐらいから飛び降りて腰を抜かす奴《やつ》があるかと云《い》ったから、この次は抜かさずに飛んで見せますと答えた。
 親類のものから西洋製のナイフを貰《もら》って奇麗《きれい》な刃《は》を日に翳《かざ》して、友達《ともだち》に見せていたら、一人が光る事は光るが切れそうもないと云った。切れぬ事があるか、何でも切ってみせると受け合った。そんなら君の指を切ってみろと注文したから、何だ指ぐらいこの通りだと右の手の親指の甲《こう》をはすに切り込《こ》んだ。幸《さいわい》ナイフが小さいのと、親指の骨が堅《かた》かったので、今だに親指は手に付いている。しかし創痕《きずあと》は死ぬまで消えぬ。
 庭を東へ二十歩に行き尽《つく》すと、南上がりにいささかばかりの菜園があって、真中《まんなか》に栗《くり》の木が一本立っている。これは命より大事な栗だ。実の熟する時分は起き抜けに背戸《せど》を出て落ちた奴を拾ってきて、学校で食う。菜園の西側が山城屋《やましろや》という質屋の庭続きで、この質屋に勘太郎《かんたろう》という十三四の倅《せがれ》が居た。勘太郎は無論弱虫である。弱虫の癖《くせ》に四つ目垣を乗りこえて、栗を盗《ぬす》みにくる。ある日の夕方|折戸《おりど》の蔭《かげ》に隠《かく》れて、とうとう勘太郎を捕《つら》まえてやった。その時勘太郎は逃《に》げ路《みち》を失って、一生懸命《いっしょうけんめい》に飛びかかってきた。向《むこ》うは二つばかり年上である。弱虫だが力は強い。鉢《はち》の開いた頭を、こっちの胸へ宛《あ》ててぐいぐい押《お》した拍子《ひょうし》に、勘太郎の頭がすべって、おれの袷《あわせ》の袖《そで》の中にはいった。邪魔《じゃま》になって手が使えぬから、無暗に手を振《ふ》ったら、袖の中にある勘太郎の頭が、右左へぐらぐら靡《なび》いた。しまいに苦しがって袖の中から、
@mocobeta
mocobeta / IndexingExample.java
Last active April 28, 2020 02:35
Hello Lucene! (6.0.0)
package example;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.*;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
@mocobeta
mocobeta / sphinx_search_issue.md
Last active November 16, 2015 03:34
Sphinx AND検索の罠?

[Memo][Sphinx] AND検索の罠?

AND 検索のサポートについて

Sphinx の検索は、スペース区切りで複数の単語を入力すると、すべての単語が含まれるドキュメントのみがヒットする(AND検索になる)。 実装はこちら: https://github.com/sphinx-doc/sphinx/blob/master/sphinx/themes/basic/static/searchtools.js_t#L363 (performTermsSearch関数)

・・・はずなのだけれど、直観的に不思議な挙動をする場合がある様子。

Sphinx-users.jp での例

@mocobeta
mocobeta / HelloKuromoji.java
Created March 21, 2015 06:12
kuromoji with neologd
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.ja.JapaneseAnalyzer;
import org.apache.lucene.analysis.ja.JapaneseTokenizer;
import org.apache.lucene.analysis.ja.tokenattributes.PartOfSpeechAttribute;
import org.apache.lucene.analysis.ja.tokenattributes.ReadingAttribute;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.util.CharArraySet;