Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Groongaใ‚’ๆคœ็ดขใ‚จใƒณใ‚ธใƒณใจใ—ใฆไฝฟใ†

Last updated at Posted at 2019-12-13

ใฏใ˜ใ‚ใซ

ใ“ใ‚“ใซใกใฏrilmayerใงใ™ใ€‚
ใ“ใฎ่จ˜ไบ‹ใฏใ‚ขใƒ‰ใƒ™ใƒณใƒˆใ‚ซใƒฌใƒณใƒ€ใƒผใ€ŒSearch&Discovery ๅ…จ้ƒจไฟบใ€12ๆ—ฅ็›ฎใฎ่จ˜ไบ‹ใจใชใ‚Šใพใ™ใ€‚๏ผˆๅฏใ‚‹ใพใงใŒใƒปใƒปใƒป

ไปŠๆ—ฅใฏๅ›ฝ็”ฃใฎๅ…จๆ–‡ๆคœ็ดขใ‚จใƒณใ‚ธใƒณใงใ‚ใ‚‹Groongaใฎ็ดนไป‹ใ‚’ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚
ๅ‰ๅ›žใฎ่จ˜ไบ‹ใง็ดนไป‹ใ—ใŸๅ…จไฝ“ๅƒใฎใ†ใกใฎๆคœ็ดขใ‚จใƒณใ‚ธใƒณใฎไธ€ไพ‹ใงใ™ใญใ€‚

Groongaใจใฏ๏ผŸ

่ปข็ฝฎ็ดขๅผ•ใ‚’็”จใ„ใŸ้ซ˜้€Ÿใƒป้ซ˜็ฒพๅบฆใชๅ…จๆ–‡ๆคœ็ดขใ‚จใƒณใ‚ธใƒณใงใ™ใ€‚
ใ‚ซใƒฉใƒ ใ‚นใƒˆใ‚ขใ‚’ๆŒใคๅˆ—ๆŒ‡ๅ‘ใฎใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใจใ—ใฆใฎๅด้ขใ‚‚ๆŒใฃใฆใ„ใ‚‹ใ‚ˆใ†ใงใ€้›†่จˆ็ญ‰ใซใ‚‚ไฝฟใˆใ‚‹ใ‚‰ใ—ใ„ใงใ™ใ€‚
ๆ—ฅๆœฌ่ชžใฎใƒˆใƒผใ‚ฏใƒŠใ‚คใ‚บใ‚„TF-IDFใซใ‚ˆใ‚‹ใ‚นใ‚ณใ‚ขใƒชใƒณใ‚ฐ๏ผˆใ‚ฝใƒผใƒˆ๏ผ‰ใซใ‚‚ๅฏพๅฟœใ—ใฆใŠใ‚Šใ€ๆคœ็ดขใ‚จใƒณใ‚ธใƒณใจใ—ใฆๅฟ…่ฆใชๆฉŸ่ƒฝใŒไธ€้€šใ‚Šๆไพ›ใ•ใ‚Œใฆใ„ใ‚‹ใŸใ‚ๅฎŸใ‚ตใƒผใƒ“ใ‚นใงๆคœ็ดขใ‚จใƒณใ‚ธใƒณใจใ—ใฆๆŽก็”จใ—ใฆใ„ใ‚‹ไผๆฅญใ‚‚ใ‚ใ‚Šใพใ™ใ€‚

ๆคœ็ดขใ‚จใƒณใ‚ธใƒณใจใ—ใฆใฎๅŸบๆœฌ็š„ใชๆ“ไฝœใ‚’่ฉฆใ—ใฆใฟใ‚‹

Groongaใ‚คใƒณใ‚นใƒˆใƒผใƒซใจ็ซ‹ใกไธŠใ’

ใ“ใกใ‚‰ใง่‰ฒใ€…ใชๆ–นๆณ•ใŒ็ดนไป‹ใ—ใฆใ‚ใ‚Šใพใ™ใŒใ€ไปŠๅ›žใฏใƒญใƒผใ‚ซใƒซ็’ฐๅขƒ๏ผˆOSX๏ผ‰ใฎDockerใง่ฉฆใ—ใฆใฟใพใ™ใ€‚
Docker Imageใ‚ใฃใกใ‚ƒ่ปฝใใฆใณใฃใใ‚Š๏ผ
ใ“ใฎDocker Imageใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงMecabใจใ‹ใ‚‚ๅ…ฅใฃใฆใ‚‹ใฎใงใ€ใใฎใพใพไฝฟใˆใฆไพฟๅˆฉใงใ™ใญใ€‚

ใจใ€ๆ€ใฃใŸใฎใงใ™ใŒๅฎŸ้š›ใซๅณใ—ใŸๆ„Ÿใ˜ใงไฝฟใ„ใŸใ‹ใฃใŸใฎใงใ€ไปฅไธ‹ใฎใ‚ˆใ†ใชDockerfileใ‚’ไฝœๆˆใ—ใฆใ‚ตใƒผใƒใƒผใƒขใƒผใƒ‰ใง็ซ‹ใกไธŠใ’ใพใ™ใ€‚

Dockerfile
FROM ubuntu:18.04

RUN apt update && \
  apt install -y

RUN apt-get -y install groonga \
    groonga-tokenizer-mecab \
    groonga-server-http

EXPOSE 10041
CMD ["service", "groonga-httpd", "start"]

ไปฅไธ‹ใฎใ‚ˆใ†ใซbuildใ—ใฆrunใ™ใ‚Œใฐ็ซ‹ใกไธŠใŒใ‚Šใพใ™ใ€‚

# build
docker build -t groonga .

# run
# ไธญใซๅ…ฅใ‚‹ๅ ดๅˆ
docker run -i -t -p 10041:10041 groonga bash

# ใƒ‡ใƒผใƒขใƒณใจใ—ใฆ่ตทๅ‹•ใ™ใ‚‹ๅ ดๅˆ
docker run -t -d -p 10041:10041 groonga

ใจใ„ใ†ใ“ใจใงใ€ http://localhost:10041/ ใซใ‚ขใ‚ฏใ‚ปใ‚นใ™ใ‚‹ใจไปฅไธ‹ใฎใ‚ˆใ†ใชใ‚ณใƒณใ‚ฝใƒผใƒซใซใ‚ขใ‚ฏใ‚ปใ‚นใงใใพใ™ใ€‚ไพฟๅˆฉใ€‚

ใ‚นใ‚ฏใƒชใƒผใƒณใ‚ทใƒงใƒƒใƒˆ 2019-12-12 9.26.13.png

ใƒ†ใƒผใƒ–ใƒซใฎไฝœๆˆใƒปใƒ‡ใƒผใ‚ฟใฎๆŠ•ๅ…ฅใƒปๆคœ็ดข

groongaใฏใ‚ใใพใงใ€Œๅ…จๆ–‡ๆคœ็ดขใŒใงใใ‚‹ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใ€ใชใฎใงใ€ใƒ†ใƒผใƒ–ใƒซไฝœๆˆใ—ใฆๅˆฉ็”จใ™ใ‚‹ๅฝขใซใชใ‚Šใพใ™ใ€‚
Elasticsearchใ ใจindexใจ่จ€ใฃใŸใ‚Šใ€Solrใ ใจcoreใจ่จ€ใฃใŸใ‚Šใ—ใพใ™ใ€‚

ไปŠๅ›žใฏๆ“ไฝœใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’Pythonใงๆ›ธใ„ใฆใฟใพใ—ใŸใ€‚๏ผˆๅ…ฌๅผใฏRubyๆŽจใ—ใฃใฝใ„ๆฐ—ใŒใ—ใพใ™ใŒใƒปใƒปใƒป๏ผ‰
groongaใงใฏๆ–ฐใŸใซใ‚ซใƒฉใƒ ใ‚’ไฝœๆˆใ™ใ‚‹้š›ใซใ€Œใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นๅž‹ใ€ใจใ„ใ†ๅž‹ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใ“ใจใซใ‚ˆใ‚Šใ€ใใฎใ‚ซใƒฉใƒ ใซๅฏพใ—ใฆๅ…จๆ–‡ๆคœ็ดขใ‚’่กŒใ†ใ“ใจใŒใงใใพใ™ใ€‚

import requests
import json

# ใ‚นใƒ†ใƒผใ‚ฟใ‚นๅ–ๅพ—
base_url = 'http://localhost:10041'
url = base_url + '/d/status'
res = requests.get(url)
json.loads(res.content) # => [[0,1576165601.392383,0.0001587867736816406],{"alloc_count":309,"starttime":1576110346,"start_time":1576110346,"uptime":55255,"version":"8.0.0","n_queries":0,"cache_hit_rate":0.0,"command_version":1,"default_command_version":1,"max_command_version":3}]

ๅ…จๆ–‡ๆคœ็ดข็”จใฎใƒ†ใƒผใƒ–ใƒซใจใ‚ซใƒฉใƒ ่ฟฝๅŠ 

ใ“ใ“ใŒgroongaใฎใƒใ‚คใƒณใƒˆใซใชใ‚‹ใ‹ใจๆ€ใ„ใพใ™ใŒใ€้€šๅธธใฎใƒ†ใƒผใƒ–ใƒซใ‚’ไฝœๆˆใ—ใŸๅพŒใซๅ…จๆ–‡ๆคœ็ดข็”จใฎใƒ†ใƒผใƒ–ใƒซใจใ‚ซใƒฉใƒ ใ‚’ไฝœๆˆใ—ใƒกใ‚คใƒณใฎใƒ†ใƒผใƒ–ใƒซใซ็ดไป˜ใ‘ใฆไฝฟใ„ใพใ™ใ€‚
ใ“ใ“ใงใฏไปฎใซใ‚ขใ‚คใƒ‰ใƒซๅใจใใฎ่ชฌๆ˜ŽใŒๅซใพใ‚Œใฆใ„ใ‚‹ใƒ†ใƒผใƒ–ใƒซใ‚’ไฝœๆˆใ—ใฆใฟใ‚‹ใ“ใจใซใ—ใพใ™ใ€‚

ใ‚นใ‚ฏใƒชใƒผใƒณใ‚ทใƒงใƒƒใƒˆ 2019-12-13 1.44.00.png
# Idolใƒ†ใƒผใƒ–ใƒซไฝœๆˆ
url = base_url + '/d/table_create'
payload = {
    'name': 'MyFavoriteIdols', # ใƒ†ใƒผใƒ–ใƒซๅ
    'flags': 'TABLE_HASH_KEY',
    'key_type': 'ShortText'
}
headers = {'content-type': 'application/json'}
res = requests.get(url, params=payload, headers=headers)

# ใ‚ซใƒฉใƒ ไฝœๆˆ
column_settings = [
    {
        'table': 'MyFavoriteIdols',
        'name': 'idol_name',
        'flags': 'COLUMN_SCALAR',
        'type': 'Text'
    },
    {
        'table': 'MyFavoriteIdols',
        'name': 'description',
        'flags': 'COLUMN_SCALAR',
        'type': 'Text'
    }
]
url = base_url + '/d/column_create'
headers = {'content-type': 'application/json'}
for column_setting in column_settings:
    res = requests.get(url, params=column_setting, headers=headers)

# ่ชžๅฝ™่กจไฝœๆˆ
url = base_url + '/d/table_create'
payload = {
    'name': 'Terms', # ใƒ†ใƒผใƒ–ใƒซๅ
    'flags': 'TABLE_PAT_KEY', # ไธปใ‚ญใƒผใ‚’ใƒ‘ใƒˆใƒชใ‚ทใ‚ขๆœจใซๆ ผ็ด
    'key_type': 'ShortText', # flagใ‚’ๆŒ‡ๅฎšใ—ใŸๅ ดๅˆใซๅฟ…่ฆ
    'default_tokenizer': 'TokenMecab', # MeCabใซใ‚ˆใ‚Šใƒˆใƒผใ‚ฏใƒŠใ‚คใ‚บ
    'normalizer': 'NormalizerAuto' # ็ต„ใฟ่พผใฟใฎใƒŽใƒผใƒžใƒฉใ‚คใ‚ถใƒผ http://groonga.org/ja/docs/reference/normalizers/normalizer_auto.html
}
headers = {'content-type': 'application/json'}
res = requests.get(url, params=payload, headers=headers)

# ใ‚ซใƒฉใƒ ่ฟฝๅŠ 
column_setting = {
    'table': 'Terms',
    'name': 'idol_description',
    'flags': 'COLUMN_INDEX|WITH_POSITION',
    'type': 'MyFavoriteIdols',
    'source': 'description'
}

url = base_url + '/d/column_create'
headers = {'content-type': 'application/json'}
res = requests.get(url, params=column_setting, headers=headers)

ใƒ‡ใƒผใ‚ฟใฎ่ฟฝๅŠ 

# descriptionใฏwikipediaใฎ่ฉฒๅฝ“ใƒšใƒผใ‚ธใ‹ใ‚‰ๆ‹ๅ€Ÿ
#   https://ja.wikipedia.org/wiki/AmiinA
#   https://ja.wikipedia.org/wiki/%E3%83%BB%E3%83%BB%E3%83%BB%E3%83%BB%E3%83%BB%E3%83%BB%E3%83%BB%E3%83%BB%E3%83%BB
#   https://ja.wikipedia.org/wiki/%E3%83%A4%E3%81%AA%E3%81%93%E3%81%A8%E3%81%9D%E3%81%A3%E3%81%A8%E3%83%9F%E3%83%A5%E3%83%BC%E3%83%88
#   https://ja.wikipedia.org/wiki/BEYOOOOONDS
#   https://ja.wikipedia.org/wiki/TipToe.
payload = [
    {
        "_key": "amiina",
        "name": "amiinA",
        "description": '้›‘่ชŒใ€Œใƒ‹ใ‚ณโ˜†ใƒ—ใƒใ€ใฎ่ชญ่€…ใƒขใƒ‡ใƒซใงใ‚ใฃใŸ[1]amiใจใ€miinaใฎ2ไบบใงใ€Œ  ใ‚ใฟใ„ใชใ€ใ‚’็ตๆˆใ€‚ใ€Œใ‚ใฟใ„ใชใ€ใฏ2ไบบใฎๅๅ‰ใ€Œใ‚ใฟใ€ใจใ€Œใฟใ„ใชใ€ใ‚’ๆŽ›ใ‘ๅˆใ‚ใ›ใŸใ‚‚ใฎใ€‚\n\n2012ๅนด8ๆœˆใ€ๅฝ“ๆ™‚ๅŒใ˜ไบ‹ๅ‹™ๆ‰€ใฎMYM MelodyใŒๅ‡บๆผ”ใ™ใ‚‹ใ‚คใƒ™ใƒณใƒˆใงๅˆๆŠซ้œฒใ€‚\n\n็ตๆˆๅฝ“ๅˆใฏใ€ใ‚‚ใ‚‚ใ„ใ‚ใ‚ฏใƒญใƒผใƒใƒผZใ‚„AKB48ใชใฉใฎใ‚ซใƒใƒผใ ใฃใŸใŒใ€ใ‚ชใƒชใ‚ธใƒŠใƒซๆ›ฒใ‚’ไฝœใ‚‹้š›ใซใƒ—ใƒญใƒ‡ใƒฅใƒผใ‚ตใƒผใจใ—ใฆๆฅฝๆ›ฒใ‚ฏใƒชใ‚จใ‚คใƒ†ใ‚ฃใƒ–ใƒใƒผใƒ ใƒปnanolineใฎ้ฝŠ่—คๅทžไธ€ใŒๅŠ ใ‚ใ‚‹[2]ใ€‚\n\n2013ๅนด8ๆœˆใ€ๅˆใฎใ‚ทใƒณใ‚ฐใƒซใ€Œ1โ˜†2โ˜†3โ˜†/ใƒžใ‚คใƒณใƒ‰ใƒˆใƒฉใƒ™ใƒซใ€ใ‚’็™บๅฃฒใ€‚ใ‚ขใƒผใƒ†ใ‚ฃใ‚นใƒˆ่กจ่จ˜ใ‚’ใ‚ขใƒซใƒ•ใ‚กใƒ™ใƒƒใƒˆใฎใ€Œamiinaใ€ใจใ™ใ‚‹ใ€‚\n\n2014ๅนด4ๆœˆใซๅ‰็”ฐ่ฑชใŒใ€ŒWith youใ€๏ผˆbayfm๏ผ‰[3]ใงใ€5ๆœˆใซๅ—ๆณขไธ€ๆตทใŒใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆๆ”พ้€ใ€Œๅ—ๆณขไธ€ๆตทใฎใ‚ขใ‚คใƒ‰ใƒซไธ‰ๅๅ…ญๆˆฟใ€[4]ใงใ€Œใƒžใ‚คใƒณใƒ‰ใƒˆใƒฉใƒ™ใƒซใ€ใ‚’็ดนไป‹ใ—ใŸใ“ใจใ‹ใ‚‰ใ€ใใฎ้ ƒใ‹ใ‚‰้Ÿณๆฅฝใซ่ฉณใ—ใ„ใ‚ขใ‚คใƒ‰ใƒซใƒ•ใ‚กใƒณใ‹ใ‚‰ๅๅฟœใŒๆฅใ‚‹ใ‚ˆใ†ใซใชใ‚Šใ€้ฝŠ่—คใฏใ€Œ้Ÿณๆฅฝ็š„ใซ่‡ช็”ฑใซๆ”ปใ‚ใฆใ‚‚ใ„ใ„ใฎใงใฏใชใ„ใ‹ใ€ใจๆ€ใ†ใ‚ˆใ†ใซใชใฃใŸใจ่ชžใฃใฆใ„ใ‚‹[5]ใ€‚\n\n2016ๅนด2ๆœˆ13ๆ—ฅใฎLIVEใ‚’ใ‚‚ใฃใฆmiinaใŒ่„ฑ้€€[6]ใ€ๆดปๅ‹•ไผ‘ๆญขใจใชใ‚‹ใ€‚\n\n2016ๅนด3ๆœˆ22ๆ—ฅใ€ใ‚นใ‚ฟใƒƒใƒ•ใฎTwitterใงใ€่กจ่จ˜ใ‚’ใ€ŒamiinAใ€ใซๅค‰ๆ›ดใ—ใ€ๆ–ฐใƒกใƒณใƒใƒผใ‚’ๅŠ ใˆๆดปๅ‹•ใ‚’ๅ†้–‹ใ™ใ‚‹ใ“ใจใ‚’็™บ่กจ[7]ใ€‚ 5ๆœˆ3ๆ—ฅใ€ๆธ‹่ฐทWWWใง้–‹ๅ‚ฌใ•ใ‚ŒใŸใ€ŒWonderTraveller!!! act.4ใ€ใงใ€ๆ–ฐใƒกใƒณใƒใƒผmiyuใŒๅŠ ๅ…ฅใ—ใ€amiinAใจใ—ใฆๅ†ๅง‹ๅ‹•[8]ใ€‚\n\n2016ๅนด12ๆœˆ28ๆ—ฅใฎใƒฉใ‚คใƒ–ใ‚’ใ‚‚ใกใ€miyuใฎ้ซ˜ๆ กๅ—้จ“ใฎใŸใ‚ๆดปๅ‹•ใ‚’ไธ€ๆ™‚ไผ‘ๆญข[9]ใ€‚\n\n2017ๅนด4ๆœˆ15ๆ—ฅใ‚ˆใ‚Šใƒฉใ‚คใƒ–ๆดปๅ‹•ใ‚’ๅ†้–‹[10]ใ€‚\n\nๆ–ฐ็”ŸamiinAใฏใ€ใ€Œawake mind into ideal naked Avalonใ€ใฎ็•ฅใ€‚\n'
    },
    {
        "_key": "dots",
        "name": "ใƒปใƒปใƒปใƒปใƒปใƒปใƒปใƒปใƒป",
        "description": '2016ๅนด4ๆœˆใซ้–‹ๅ‚ฌใ•ใ‚ŒใŸใ€Œใ€Žๅฅณใฎๅญใฎๆฑไบฌใ‚’ใคใใ‚ใ†!!ใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ ใ‚ขใ‚คใƒ‰ใƒซใ‚ชใƒผใƒ‡ใ‚ฃใ‚ทใƒงใƒณใ€ใง้ธใฐใ‚ŒใŸใƒกใƒณใƒใƒผใซใ‚ˆใ‚‹ใƒฆใƒ‹ใƒƒใƒˆ[1][2]ใ€‚\n\nใ‚ณใƒณใ‚ปใƒ—ใƒˆใฏใ€Œใƒใ‚นใƒˆใƒปใƒใ‚ฑใƒขใƒณGO!ๆ™‚ไปฃใฎใ‚ขใ‚คใƒ‰ใƒซใ€ใ€Œๅธธใซ็บใˆใ‚‹(ใพใจใˆใ‚‹)ใ‚ขใ‚คใƒ‰ใƒซใ€[3]ใ€Œ้ƒฝๅธ‚ใฎๅนฝ้œŠใ€[4]ใ€‚\n\nๅๅ‰ใ‚„้ก”ใ‚’ๅ‡บใ•ใชใ„ใ€ใ‚ทใƒฅใƒผใ‚ฒใ‚คใ‚ถใƒผใ‚„ใ‚ขใƒณใƒ€ใƒผใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใƒปใƒ‘ใƒณใ‚ฏใชใฉใ‚’่ธ่ฅฒใ—ใŸๆฅฝๆ›ฒใ€ใƒ†ใ‚ฏใƒŽใƒญใ‚ธใƒผใ‚’็”จใ„ใŸๅ…จใๆ–ฐใ—ใ„ใ‚ขใ‚คใƒ‰ใƒซๆดปๅ‹•ใชใฉใ‚’็‰นๅพดใจใ™ใ‚‹ใ€‚\n\nใƒฉใ‚คใƒ–ใฎใ“ใจใ‚’ใ€Œ่ฆณๆธฌใ€ใ€ใƒ•ใ‚กใƒณใฎใ“ใจใ‚’ใ€Œ่ฆณๆธฌๅ“กใ€ใจๅ‘ผใถใ€‚\n\nใƒฉใ‚คใƒ–ไธญใฏๅ†™็œŸๆ’ฎๅฝฑๅฏ่ƒฝใ€ๅ‹•็”ปๆ’ฎๅฝฑไธๅฏ[5]ใ€‚\n'
    },
    {
        "_key": "ysm",
        "name": "ใƒคใชใ“ใจใใฃใจใƒŸใƒฅใƒผใƒˆ",
        "description": 'BELLRINGๅฐ‘ๅฅณใƒใƒผใƒˆโ†’There There Theresใฎ้‹ๅ–ถใ‚’ๆ‰‹ๆŽ›ใ‘ใŸใ‚ฏใƒชใƒ ใ‚พใƒณๅฐๅˆทใซใ‚ˆใ‚‹ๆ–ฐใ‚ขใ‚คใƒ‰ใƒซใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ€‚ใŸใ ใ—ใ€BELLRINGๅฐ‘ๅฅณใƒใƒผใƒˆใƒ‡ใ‚ฃใƒฌใ‚ฏใ‚ฟใƒผใฎ็”ฐไธญ็ด˜ๆฒปใŠใ‚ˆใณAqbiRecใฏ้‹ๅ–ถใซใฏ้–ขไธŽใ›ใš[1]ใ€ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฎๆ…Ž็ง€็ฏ„๏ผˆDCGไปฃ่กจ๏ผ‰ใจๆž—ๆƒ‡ๅคชใ€ไฝœๆ›ฒๅฎถใƒปใ‚ขใƒฌใƒณใ‚ธใƒฃใƒผใฎใ‚ฟใƒ‹ใƒคใƒžใƒ’ใƒญใ‚ขใ‚ญ๏ผˆ2019ๅนด้›ข่„ฑ[ๆณจ 1]๏ผ‰ใ‹ใ‚‰ใชใ‚‹ใƒใƒผใƒ ใ€ŒDCG ENTERTAINMENTใ€ใŒใƒ—ใƒญใƒ‡ใƒฅใƒผใ‚นใ‚’ๆ‹…ใฃใฆใ„ใ‚‹[2]ใ€‚\n\nใ‚ณใƒณใ‚ปใƒ—ใƒˆใฏใ€Œใƒคใชใ“ใจใ ใ‚‰ใ‘ใฎๆ—ฅๅธธใ‚’ใใฃใจใƒŸใƒฅใƒผใƒˆใ—ใฆใ‚‚ไฝ•ใ‚‚่งฃๆฑบใ—ใชใ„ใ‚“ใ ใ‘ใฉใ€ใจใ‚Šใ‚ใˆใšใƒญใƒƒใ‚ฏใ‚ตใ‚ฆใƒณใƒ‰ใซๅˆ‡ใชใ„ใƒกใƒญใƒ‡ใ‚ฃใƒผใ‚’ไน—ใ›ใฆๆญŒใฃใฆใฟใ‚‹ไบ‹ใซใ™ใ‚‹ใ€‚ใ€[3]ใ€‚ใ‚ฐใƒฉใƒณใ‚ธใ‚„ใ‚ทใƒฅใƒผใ‚ฒใ‚คใ‚ถใƒผใจใ„ใฃใŸใ‚ชใƒซใ‚ฟใƒŠใƒ†ใ‚ฃใƒ–ใƒปใƒญใƒƒใ‚ฏใ‚’ไธปไฝ“ใจใ™ใ‚‹ใ€‚ใชใŠใ€ใ‚ฟใƒ‹ใƒคใƒžใฏใƒคใƒŠใƒŸใƒฅใƒผใงใฏใƒžใƒใƒผใ‚ธใƒกใƒณใƒˆใจใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใ‚’ไธปใซๆ‹…ๅฝ“[2]ใ—ใฆใ„ใŸใŸใ‚ใ€ๆœฌ่ทใงใ‚ใ‚‹ไฝœๆ›ฒใƒป็ทจๆ›ฒใฏใ‚ชใƒผใƒ—ใƒ‹ใƒณใ‚ฐSEใฎใ€Œใƒคใชใ“ใจFridayใ€ไปฅๅค–ๆ‰‹ใŒใ‘ใฆใ„ใชใ„ใ€‚\n\nใƒฉใ‚คใƒ–ไธญใฎๅ†™็œŸๆ’ฎๅฝฑใƒปๅ‹•็”ปๆ’ฎๅฝฑใฏๅŽŸๅ‰‡ใจใ—ใฆๅฏ่ƒฝใ€‚ใƒชใƒ•ใƒˆใ€ใƒ€ใ‚คใƒ–ใ€ใ‚ตใƒผใƒ•ใจใ„ใฃใŸ"ไบบใฎไธŠใซไน—ใ‚‹่กŒ็‚บ"ใฏ2017ๅนด4ๆœˆ29ๆ—ฅไปฅ้™็ฆๆญขใ€‚\n'
    },
    {
        "_key": "byooooonds",
        "name": "BEYOOOOONDS",
        "description": 'ใƒใƒญใƒ—ใƒญ็ ”ไฟฎ็”Ÿใ‹ใ‚‰้ธใฐใ‚ŒใŸใƒกใƒณใƒใƒผใง็ตๆˆใ•ใ‚ŒใŸใƒฆใƒ‹ใƒƒใƒˆใ€CHICA#TETSU๏ผˆใƒใ‚ซ๏ผƒใƒ†ใƒ„๏ผ‰ใ€้›จใƒŽๆฃฎ ๅทๆตท๏ผˆใ‚ใ‚ใฎใ‚‚ใ‚Š ใ‹ใ‚ใ†ใฟ๏ผ‰ใ€ใŠใ‚ˆใณใ€Žใƒใƒญใƒผ!ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆโ€œONLY YOUโ€ใ‚ชใƒผใƒ‡ใ‚ฃใ‚ทใƒงใƒณใ€ๅˆๆ ผ่€…ใซใ‚ˆใ‚Šๆง‹ๆˆใ•ใ‚Œใ‚‹[1]ใ€‚\nใ€Œใ€œใ‚’่ถ…ใˆใฆใ€ใ€Œใ€œใฎๅ‘ใ“ใ†ๅดใธใ€ใจใ„ใ†ๆ„ๅ‘ณใฎ่‹ฑๅ˜่ชžใ€ŒBeyondใ€ใ‚’ใ‚ฐใƒซใƒผใƒ—ๅใฎ่ชžๆบใจใ—ใ€ๆ—ขๆˆใฎๆž ็ต„ใชใฉใ‚’่ถ…ใˆใฆใ€่‡ช็”ฑใซๆœชๆฅใธๅคงใใใƒ“ใƒจใƒผใƒณใจไผธใณใฆใ„ใฃใฆใปใ—ใ„ใจใ„ใ†ๆ€ใ„ใŒ่พผใ‚ใ‚‰ใ‚Œใฆใ„ใ‚‹ใ€‚ๅฝขใ‚’ๅค‰ๅนป่‡ชๅœจใซใƒ“ใƒจใƒผใƒณใณใ‚ˆใƒผใ‚“ใจๅค‰่ฒŒใ•ใ›ใ‚‹ใ€ใ‚นใƒฉใ‚คใƒ ใฎใ‚ˆใ†ใชใ‚ฐใƒซใƒผใƒ—ใ‚’็›ฎๆŒ‡ใ™[1]ใ€‚\nBEYOOOOONDSใฎใƒชใƒผใƒ€ใƒผใฏใ€2018ๅนด12ๆœˆ็พๅœจใ€ๅ…ฌๅผใซใฏ็™บ่กจใ•ใ‚Œใฆใ„ใชใ„ใ€‚\n'
    },
    {
        "_key": "tiptoe",
        "name": "tipToe.",
        "description": 'ๅˆถไฝœใƒ—ใƒญใƒ€ใ‚ฏใ‚ทใƒงใƒณๅˆๅŒไผš็คพSOVAใฎ็คพๅ†…ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใจใ—ใฆ็ซ‹ใกไธŠใŒใ‚Šใ€2016ๅนดๅคใซ่กŒใฃใŸใ‚ชใƒผใƒ‡ใ‚ฃใ‚ทใƒงใƒณ[1] ใงไธ€่ˆฌใ‹ใ‚‰้ธใฐใ‚ŒใŸใƒกใƒณใƒใƒผใง็ตๆˆใ€‚ใ€Œใฟใ‚“ใชใง้’ๆ˜ฅใ—ใพใ›ใ‚“ใ‹๏ผŸใ€ใ‚’ใ‚ณใƒณใ‚ปใƒ—ใƒˆใซๆŽฒใ’ใ€้’ๆ˜ฅใ‚„ๅญฆๆ กใ‚’ใƒขใƒใƒผใƒ•ใจใ—ใŸๆฅฝๆ›ฒใ‚„ใƒดใ‚ฃใ‚ธใƒฅใ‚ขใƒซใŒๆŒใกๅ‘ณใ€‚ใƒกใƒณใƒใƒผใฏ3ๅนดไปปๆœŸๅˆถใงๅŠ ๅ…ฅใ‹ใ‚‰3ๅนดใงๅฟ…ใšๅ’ๆฅญใ™ใ‚‹ใ“ใจใซใชใฃใฆใ„ใ‚‹ใ€‚\n\n็ตฑๆ‹ฌๅŠใณ้Ÿณๆฅฝใƒ—ใƒญใƒ‡ใƒฅใƒผใ‚ตใƒผใฏ้Ÿณๆฅฝใƒฌใƒผใƒ™ใƒซ6jomaProjectไธปๅฎฐใฎๆœฌ้–“็ฟ”ๅคชใ€‚ๆ˜ ๅƒใ‚„่กฃ่ฃ…ใชใฉใ‚’ๆ‹…ๅฝ“ใ™ใ‚‹ใƒดใ‚ฃใ‚ธใƒฅใ‚ขใƒซใƒ—ใƒญใƒ‡ใƒฅใƒผใ‚ตใƒผใฏๅ†™็œŸๅฎถใฎ้•ท่ฐทๅทๅœญไฝ‘ใ€‚ๆฅฝๆ›ฒใ‚„ๆŒฏไป˜ใชใฉใซ่‡ช่บซใ‚‚ใ‚ขใƒผใƒ†ใ‚ฃใ‚นใƒˆใจใ—ใฆๆดปๅ‹•ใ™ใ‚‹่‹ฅๆ‰‹ใ‚ฏใƒชใ‚จใ‚คใ‚ฟใƒผใ‚’ๆ•ฐๅคšใ่ตท็”จใ™ใ‚‹ใ“ใจใ‚‚็‰นๅพดใ€‚\n\nๆฅฝๆ›ฒใฏใ€ๆธ‹่ฐท็ณปใ‚ฎใ‚ฟใƒผใƒใƒƒใƒ—ใ‚’ใƒ™ใƒผใ‚นใซใ‚จใƒฌใ‚ฏใƒˆใƒญใƒ‹ใ‚ซใƒปใƒใƒƒใƒ—ใƒใƒฅใƒผใƒณใฎ่ฆ็ด ใ‚’็››ใ‚Š่พผใ‚“ใ ็ˆฝใ‚„ใ‹ใงใ‚จใƒขใƒผใ‚ทใƒงใƒŠใƒซใชใ‚‚ใฎใŒๅคšใ„ใ€‚\n\nใ‚ฐใƒซใƒผใƒ—ๅใฏใ€Œๅฐ‘ใ—ใ ใ‘่ƒŒไผธใณใ—ใฆใ€ไปŠใ‚ˆใ‚Šใ‚‚้ซ˜ใ„ๆ‰€ใซๅฑŠใใ‚ˆใ†ใซใ€ใจใ„ใ†ๆ€ใ„ใ‚’่พผใ‚ใฆใ€Œ่ƒŒไผธใณใ™ใ‚‹ใ€(=ใ€Œใคใพๅ…ˆใง็ซ‹ใคใ€)ใ‚’ๆ„ๅ‘ณใ™ใ‚‹่‹ฑ่ชžใ€Œstand on tiptoeใ€ใ‹ใ‚‰[2]ใ€‚\n'
    },
]

# ใƒ‡ใƒผใ‚ฟใฎใƒญใƒผใƒ‰
url = base_url + '/d/load?table=MyFavoriteIdols'
headers = {'content-type': 'application/json'}
res = requests.post(url, data=json.dumps(payload), headers=headers)

ใƒ‡ใƒผใ‚ฟใฎๆคœ็ดข

ไปฅไธ‹ใฎใ‚ˆใ†ใชใ‚ณใƒžใƒณใƒ‰ใงๆคœ็ดขใŒใงใใพใ™ใ€‚

# ๆคœ็ดข
query = 'ใƒกใƒณใƒใƒผ'
column_setting = {
    'table': 'MyFavoriteIdols',
    'query': f"description:@{query}",
    'output_columns': '_key,idol_name,description',
    'sort_keys': '-_score'
}

url = base_url + '/d/select'
headers = {'content-type': 'application/json'}
res = requests.get(url, params=column_setting, headers=headers)
results = json.loads(res.content)

# ็ตๆžœ่กจ็คบ
print('hit:  ', results[1][0][0][0])
clumn_names = results[1][0][1]
for result in results[1][0][2:]:
    for i, clumn_name in enumerate(clumn_names):
        print(clumn_name[0], ':  ', result[i][0:50])
    print()

็ตๆžœใฏไปฅไธ‹ใฎใ‚ˆใ†ใชๆ„Ÿใ˜ใ€‚

hit:   4
_key :   amiina
idol_name :   amiinA
description :   ้›‘่ชŒใ€Œใƒ‹ใ‚ณโ˜†ใƒ—ใƒใ€ใฎ่ชญ่€…ใƒขใƒ‡ใƒซใงใ‚ใฃใŸ[1]amiใจใ€miinaใฎ2ไบบใงใ€Œ  ใ‚ใฟใ„ใชใ€ใ‚’็ตๆˆใ€‚ใ€Œใ‚

_key :   tiptoe
idol_name :   tipToe.
description :   ๅˆถไฝœใƒ—ใƒญใƒ€ใ‚ฏใ‚ทใƒงใƒณๅˆๅŒไผš็คพSOVAใฎ็คพๅ†…ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใจใ—ใฆ็ซ‹ใกไธŠใŒใ‚Šใ€2016ๅนดๅคใซ่กŒใฃใŸใ‚ชใƒผใƒ‡ใ‚ฃใ‚ท

_key :   byooooonds
idol_name :   BEYOOOOONDS
description :   ใƒใƒญใƒ—ใƒญ็ ”ไฟฎ็”Ÿใ‹ใ‚‰้ธใฐใ‚ŒใŸใƒกใƒณใƒใƒผใง็ตๆˆใ•ใ‚ŒใŸใƒฆใƒ‹ใƒƒใƒˆใ€CHICA#TETSU๏ผˆใƒใ‚ซ๏ผƒใƒ†ใƒ„๏ผ‰ใ€้›จใƒŽๆฃฎ

_key :   dots
idol_name :   ใƒปใƒปใƒปใƒปใƒปใƒปใƒปใƒปใƒป
description :   2016ๅนด4ๆœˆใซ้–‹ๅ‚ฌใ•ใ‚ŒใŸใ€Œใ€Žๅฅณใฎๅญใฎๆฑไบฌใ‚’ใคใใ‚ใ†!!ใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ ใ‚ขใ‚คใƒ‰ใƒซใ‚ชใƒผใƒ‡ใ‚ฃใ‚ทใƒงใƒณใ€ใง้ธ

ใŠใ‚ใ‚Šใซ

ไปŠๅ›žใฏgroonagaใ‚’ๆคœ็ดขใ‚ตใƒผใƒใƒผใจใ—ใฆไฝฟใฃใฆใฟใ‚‹ใŸใ‚ใฎใ•ใ‚ใ‚Šใ‚’็ดนไป‹ใ—ใฆใฟใพใ—ใŸใ€‚
ไปŠๅพŒใฏๅฎŸ้š›ใฎใ‚ตใƒผใƒใƒผไธŠใซ็ซ‹ใฆใŸๅ ดๅˆใฎๆ€ง่ƒฝ่ฉฆ้จ“ใ€ใƒ†ใ‚นใƒˆใƒ‡ใƒผใ‚ฟใซใ‚ˆใ‚‹ๆคœ็ดข็ตๆžœๆฏ”่ผƒใชใฉใ‚„ใฃใฆใฟใŸใ„ใงใ™ใ€‚

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
rilmayer

@rilmayer(FURUSAWA Tomohiro)

ๆœ€่ฟ‘็ณ–่ณชๅˆถ้™ใ‚’ใ—ใฆใ„ใ‚‹ใ€‚
libora
e-Learningไธ€ๆ‹ฌๆคœ็ดขใ‚ตใƒผใƒ“ใ‚นใ€ŽLIBORAใ€ใฎ้–‹็™บใƒป้‹ๅ–ถใ‚’่กŒใฃใฆใ„ใพใ™ใ€‚

Today's trending articles

Comments

No comments

Let's comment your feelings that are more than good

Qiita Advent Calendar is held!

Qiita Advent Calendar is an article posting event where you post articles by filling a calendar ๐ŸŽ…

Some calendars come with gifts and some gifts are drawn from all calendars ๐Ÿ‘€

Please tie the article to your calendar and let's enjoy Christmas together!

2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address