<div dir="ltr"><div>村上です。<br><br>&gt; TokenTrigramでトークナイズした文書を2文字で検索したいのですが、<br>
&gt; TokenTrigramって「TokenBigramに1文字の検索文字列を投げた時の<br>&gt; ように前方一致で上手くやってくれる」機能はなかったりしますか?<br><br></div>TokenTrigramで2文字で検索したときも勝手に前方一致でうまくやって<br>くれる機能が以下のPRで追加されました!<br><br><a href="https://github.com/groonga/groonga/pull/341">https://github.com/groonga/groonga/pull/341</a><br><div><br>また、Gistの最後に書いてあったDプラグマと前方一致のアスタリスク<br>を一緒に使うときの挙動もおかしかったので以下のPRで直しました!<br><br><a href="https://github.com/mroonga/mroonga/pull/54">https://github.com/mroonga/mroonga/pull/54</a><br><font size="2"><span style="font-family:arial,helvetica,sans-serif"><br>この2つを入れれば、Gistの例ではすべて4レコードで返ってきます〜<br><br></span></font></div><div><code><font size="2"><span style="font-family:arial,helvetica,sans-serif">masterかnightlyを使うか、次のリリースをお待ちください!<br><br>以上です。</span></font><span style="font-family:arial,helvetica,sans-serif"><br>村上</span><br></code></div><div><code><br></code></div><div class="gmail_extra"><br><div class="gmail_quote">2015年5月21日 21:34 Naoya Murakami <span dir="ltr">&lt;<a href="mailto:visio****@gmail*****" target="_blank">visio****@gmail*****</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>村上です。<br><br></div><div>さらにすいません。。<br>このケースなら次のトークンが字種境界であるかどうかという<br>判定まではたぶん必要ありませんでしたね。。<br><br>TokenTrigramの場合に対応させる場合、REACH_ENDの場合も<br>force_prefixを追加するという対応だけで大丈夫なような気がしました。<br><br>diff --git a/lib/token_cursor.c b/lib/token_cursor.c<br>index d98d1d4..1fa355d 100644<br>--- a/lib/token_cursor.c<br>+++ b/lib/token_cursor.c<br>@@ -245,7 +245,8 @@ grn_token_cursor_next(grn_ctx *ctx, grn_token_cursor *token_cursor)<br>             continue;<br>           }<br>         } else {<br>-          if (status &amp; GRN_TOKEN_LAST) {<br>+          if (status &amp; GRN_TOKEN_REACH_END ||<br>+              status &amp; GRN_TOKEN_LAST) {<br>             token_cursor-&gt;force_prefix = GRN_TRUE;<br>           }<br>         }<br></div><br>次のトークンが字種境界であるかまでを判定する必要があったのは個人的に<br>やっていたGET時のトークンを飛ばすやつかVgramにするときに必要になった<br>のかもしれません。(忘れた)<br><br>以上です。<br><div><br><div class="gmail_extra"><br><div class="gmail_quote">2015年5月21日 20:22 Naoya Murakami <span dir="ltr">&lt;<a href="mailto:visio****@gmail*****" target="_blank">visio****@gmail*****</a>&gt;</span>:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>村上です。<br><br>お久しぶりです!<br><br>すいません。<br>ついメールしちゃいましたが、よくよく考えるともう少し考慮が必要ですね。。<br><br>次のトークンが字種境界であるかどうかという判定もいるかもしれません。<br>(このあたり無駄なく奇麗に書く自身がないからPRを投げるのをやめておいたのを<br>思い出しました。)<br><br></div><div>(1) 1トークンでクエリが2文字だけ(UNMATURED)の場合<br></div><div>クエリ:&quot;だよ&quot;<br>本文:&quot;だよね&quot;<br>はヒットするべき(強制前方一致フラグつける)<br></div><div><br></div><div>(2) 複数トークンで2つめのトークンが2文字だけの場合<br></div>クエリ:&quot;ABCだよ&quot; <br><div>本文:&quot;ABCだよね&quot;<br>はヒットするべき(強制前方一致フラグつける)</div><div><br></div><div>(3) 複数トークンで1つめのトークンが2文字だけの場合<br></div><div>クエリ:&quot;これABC&quot;<br>本文:&quot;これはABC&quot;<br></div><div>はヒットしないべき(強制前方一致フラグつけない)<br><br></div><div>以上です。<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015年5月21日 19:57 yoku ts. <span dir="ltr">&lt;<a href="mailto:yoku0****@gmail*****" target="_blank">yoku0****@gmail*****</a>&gt;</span>:<div><div><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">わあ、お久しぶりです :)<br>
ありがとうございます。<br>
<br>
このへんをホゲればいいいみたいですよ! 須藤さん! (??????<br>
<br>
<br>
ところで、メーリングリストのドメイン変わったんですね。<br>
これか。。<br>
Slashdot JapanならびにSourceForge.JP、サイト名称変更のお知らせ | OSDN株式会社<br>
<a href="http://osdn.co.jp/press/2015/04/%E3%82%B5%E3%82%A4%E3%83%88%E5%90%8D%E7%A7%B0%E5%A4%89%E6%9B%B4%E3%81%AE%E3%81%8A%E7%9F%A5%E3%82%89%E3%81%9B" target="_blank">http://osdn.co.jp/press/2015/04/%E3%82%B5%E3%82%A4%E3%83%88%E5%90%8D%E7%A7%B0%E5%A4%89%E6%9B%B4%E3%81%AE%E3%81%8A%E7%9F%A5%E3%82%89%E3%81%9B</a><br>
<br>
<br>
yoku0825,<br>
<br>
<br>
<br>
2015年5月21日 19:44 Naoya Murakami &lt;<a href="mailto:visio****@gmail*****" target="_blank">visio****@gmail*****</a>&gt;:<br>
<div><div>&gt; 村上です。<br>
&gt;<br>
&gt; たしか、今のTokenTrigramはそんな感じでした。<br>
&gt; (かなり久しぶりにGroongaのソース見ました)<br>
&gt;<br>
&gt; <a href="https://github.com/groonga/groonga/blob/master/lib/token_cursor.c#L248-L250" target="_blank">https://github.com/groonga/groonga/blob/master/lib/token_cursor.c#L248-L250</a><br>
&gt; (1個目のトークンはUNMATUREDでGRN_TOKEN_REACH_ENDですがGRN_TOKEN_LASTじゃない)<br>
&gt;<br>
&gt; <a href="https://github.com/groonga/groonga/blob/master/lib/tokenizers.c#L433-L435" target="_blank">https://github.com/groonga/groonga/blob/master/lib/tokenizers.c#L433-L435</a><br>
&gt;<br>
&gt; GET時のトークンが1個で、且つ、REACH_ENDの場合(字種境界じゃない場合)は、<br>
&gt; TokenTrigramでも強制前方一致検索されるとよさそうに思いました。<br>
&gt;<br>
&gt; 以上です。<br>
&gt;<br>
&gt;<br>
&gt; 2015年5月21日 19:28 yoku ts. &lt;<a href="mailto:yoku0****@gmail*****" target="_blank">yoku0****@gmail*****</a>&gt;:<br>
&gt;&gt;<br>
&gt;&gt; こんばんは、yoku0825といいます。<br>
&gt;&gt;<br>
&gt;&gt; TokenTrigramでトークナイズした文書を2文字で検索したいのですが、<br>
&gt;&gt; TokenTrigramって「TokenBigramに1文字の検索文字列を投げた時のように前方一致で上手くやってくれる」機能はなかったりしますか?<br>
&gt;&gt;<br>
&gt;&gt; 1文字のクエリーを投げると前方一致にすり替えてくれてそうなんですが、2文字はマッチ検索しているっぽいです。こういう仕様でしたっけ?<br>
&gt;&gt;<br>
&gt;&gt; <a href="https://gist.github.com/yoku0825/1da3aa16a2dd14e99f55" target="_blank">https://gist.github.com/yoku0825/1da3aa16a2dd14e99f55</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 取り敢えずyumでmysql-community-mroongaを突っ込んだもので再現しています。<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ( ´-`).oO(TokenBigramからTokenTrigramに乗り換えようとしたら、2文字のクエリーだけ盛大におかしくて。。<br>
&gt;&gt; ( ´-`).oO(mroonga_match_escalation_thresholdを有効にしろとかそんな感じですかね…?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; yoku0825,<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; groonga-dev mailing list<br>
&gt;&gt; <a href="mailto:groon****@lists*****" target="_blank">groon****@lists*****</a><br>
&gt;&gt; <a href="http://lists.osdn.me/mailman/listinfo/groonga-dev" target="_blank">http://lists.osdn.me/mailman/listinfo/groonga-dev</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; groonga-dev mailing list<br>
&gt; <a href="mailto:groon****@lists*****" target="_blank">groon****@lists*****</a><br>
&gt; <a href="http://lists.osdn.me/mailman/listinfo/groonga-dev" target="_blank">http://lists.osdn.me/mailman/listinfo/groonga-dev</a><br>
&gt;<br>
_______________________________________________<br>
groonga-dev mailing list<br>
<a href="mailto:groon****@lists*****" target="_blank">groon****@lists*****</a><br>
<a href="http://lists.osdn.me/mailman/listinfo/groonga-dev" target="_blank">http://lists.osdn.me/mailman/listinfo/groonga-dev</a><br>
</div></div></blockquote></div></div></div><br></div>
</blockquote></div></div></div><br></div></div></div>
</blockquote></div><br></div></div>