篠田です。
表題のとおりなのですが、以下の例でスマートに snippet_html を取る方法は
ありますでしょうか?
table_create Mails TABLE_HASH_KEY ShortText
table_create Contents TABLE_NO_KEY
column_create Contents body COLUMN_SCALAR LongText
column_create Contents msgid COLUMN_SCALAR Mails
column_create Mails subject COLUMN_SCALAR ShortText
column_create Mails content COLUMN_VECTOR Contents
column_create Contents index COLUMN_INDEX Mails content
table_create --name Bigram --flags TABLE_PAT_KEY --key_type ShortText --normalizer NormalizerAuto --default_tokenizer TokenBigram
column_create --table Bigram --name mail_index --flags COLUMN_INDEX|WITH_POSITION --type Contents --source body
column_create --table Bigram --name mail_index2 --flags COLUMN_INDEX|WITH_POSITION --type Mails --source subject
load --table Mails
[
{ "_key":"<aaa @ bbb>",
"subject":"題名です",
"content":[
{"body":"plain text", "msgid":"<aaa @ bbb>"},
{"body":"ワード文書", "msgid":"<aaa @ bbb>"},
],
},
]
select Mails --match_columns subject,content.body --query '題名' --output_columns '_key,snippet_html(subject),snippet_html(content.body)'
→〜"records":[["<aaa @ bbb>",["<span class=\"keyword\">題名</span>です"],null]]}}
結果:期待通り
select Mails --match_columns subject,content.body --query 'ワード' --output_columns '_key,snippet_html(subject),snippet_html(content.body)'
→〜"records":[["<aaa @ bbb>",null,null]]}}
結果:NG
select Mails --match_columns subject,content.body --query 'ワード' --output_columns '_key,snippet_html(subject),snippet_html(content.body[1])'
→〜"records":[["<aaa @ bbb>",null,["<span class=\"keyword\">ワード</span>文書"]]]}}
結果:ベクターカラムの添字を入れれば出力されるが、どの添字がqueryで
引っかかったものなのかが分からないため、あらゆるケースに対応し
たスマートな書き方がない。
例えば、snippet_html(vector_concat(content.body)) みたいな書き
方はできませんかね? たかが snippet なので最悪それでもいいので
すが…
※余談
Contents→Mailsへの逆インデックスを作って、
select Contents --match_columns msgid.subject,body --query 'ワード' --output_columns 'msgid,snippet_html(msgid.subject),snippet_html(body)'
とすれば、〜"records":[["<aaa @ bbb>",null,["<span class=\"keyword\">ワード</span>文書"]]]}}
という結果を得られることはできますが、私の実際の使い方では Mails が置
かれているフォルダ(MailIds)という別のベクターカラムで示されるデータも
あるため、結局そこでまた「ベクターカラムをテーブル参照検索した結果が直
接得られない」という問題に戻ってしまいます。
--
篠田 敦
shino****@jcom*****