Elasticsearch のフィルタ等をいじって日本語も1字ずつではなく名詞等でマッチできるように試行錯誤しているのだけど、カタカナならできるのにひらがな・漢字だとできない状態。
@mayaeh curl -XGET -H Content-Type:application/json 'localhost:9200/idx_ak/_analyze?pretty=true' -d '{
"analyzer" : "my_ja_analyzer","text" : "解析するテキスト"
}' とか試してどうなります? idx_ak
と my_ja_analyzer の部分はお使いのインデックスとアナライザの名前で
@tateisu ありがとうございます
調べたいのですが、Mastodon の使う index 名が分からないのです
@mayaeh GET /_cat/indices?v
@tateisu ありがとうございます!助かりました…こんな名前が指定されているとは思いませんでした https://taruntarun.net/media/4n_f6SATY8P83_c_chc
@mayaeh がんばってください! こちらは程よい設定を見つける前に頓挫しました(
@tateisu ありがとうございます!
Chewy 経由だと複数の analyzer, tokenizer を指定できないと思い N-gram との併用は断念していました。
@mayaeh ぁー、そういう問題が…。 curl -XPUT -H Content-Type:application/json http://localhost:9200/idx_ak/_mapping/type_bk -d '{
"properties" : {
"kw" : {
"type" : "text"
,"analyzer": "my_ja_analyzer"
,"fields": {
"raw": {
"type" : "text"
,"analyzer": "my_ja_analyzer2"
}
}
}
}
}'
ES的にはこんな感じで出来てたんですけど、Chewyは使ったことないなあ…
@tateisu すみません、以前話した chewy 経由での複数 analyzer 指定についてですが、別のところからそう考えていたようです。
こちら ( https://qiita.com/shin_hayata/items/41c07923dbf58f13eec4 ) の「実際の設定の記述は?」に "index一つにつき、カスタムアナライザは一つしか定義できないようです。" とあったため、大変そうと考え断念したのだと思います。
chewy でどうかは未確認と思います。
@mayaeh Chewy的には https://github.com/toptal/chewy の Multi (nested) and object field types の項を見ると
field :full_name, type: 'text', value: ->{ full_name.strip } do
field :ordered, analyzer: 'ordered'
field :untouched, index: 'not_analyzed'
end
みたいな感じで出来るらしいですけど自分では触ったことすらないのでわかりません
@tateisu なんと。ありがとうございます!
analyzer 複数指定できるとは思わず読み飛ばしていました
@mayaeh あと多分クエリ時に multi_match を指定する感じになると思うんですよね。 https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html
GET my_index/_search
{
"query": {
"multi_match": {
"query": "quick brown foxes",
"fields": [
"text",
"text.english"
],
"type": "most_fields"
}
}
}
@tateisu むう…私にはちょっと難易度が高そうです。調べてみます