[Senna-dev 665] Re: NGRAM での英数字の部分一致検索について

Back to archive index

Yutaro Shimamura yu****@irx*****
2007年 8月 30日 (木) 17:30:00 JST


こんにちは。島村です。

SEN_INDEX_SPLIT_ALPHAやSEN_INDEX_SPLIT_DIGITフラグを
インデックス作成時につけることによって、
文字数ごとの分割が可能になります。

今のトリトンでは指定できなかったような気がしますが、
Sennaのソースコードlib/lex.cの

  44   lex->uni_alpha = (nstr->ctypes && !(lex->sym->flags &  
SEN_INDEX_SPLIT_ALPHA));
  45   lex->uni_digit = (nstr->ctypes && !(lex->sym->flags &  
SEN_INDEX_SPLIT_DIGIT));
  46   lex->uni_symbol = (nstr->ctypes && !(lex->sym->flags &  
SEN_INDEX_SPLIT_SYMBOL));

辺りをコメントアウトすると可能です。

(インデックス作成からやり直す必要がありますが)


On Aug 30, 2007, at 5:21 PM, <ym_sabn-****@yahoo*****> <ym_sabn- 
mysql****@yahoo*****> wrote:

> お世話になっております。井上です。
> 表題の件について質問させてください。
>
> CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX ft USING NGRAM (c1))  
> ENGINE = MyISAM DEFAULT CHARSET utf8;
> INSERT INTO t1 VALUES ("FedoraCore500の技");
>
> という状態で、
>
> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("500");
>
> と検索するとヒットするのですが、
>
> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("00");
>> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("Core");
>
> と検索するとヒットしませんでした。
> 英数字に限り単語単位に分けているのかなと思い、
>
> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("Fedo");
>
> と試してみたのですが、これはヒットします。また、
>
> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("50");
>
> もヒットします。
> 純粋にNGRAM化されているのであれば「Core」や「00」でも
> ヒットすると思っていましたので少々意外でした。
>
> また、非正規化(NO NORMALIZE)を付けて試してみたのですが、
> その場合には、
>
> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("00");
> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("Core");
>
> の両方ともヒットいたします。
> 私の方での使用用途でのお話で恐縮ですが、「00」や「Core」
> もヒットする方がしっくりくるようなサービスの予定ですので、
> 何かよい手はないかと困っております。
>
> #例えば「DiningBar ルイーダの酒場」なんてお店があった場合、
> #「Bar」で検索してもヒットして欲しい、といったような…。
>
> 非正規化のオプションを付けると当然ながら今度は、
>
> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("500");
>
> と全角で検索するとヒットしなくなりますのでこれも避けたく
> 思っています。
> #アプリケーションレイヤーで対応できる内容ではありますが。
>
>
> と、色々試してみまして、正規化と非正規化でいったいどのような
> 差が出るのか、また、正規化を生かした状態で、
>
> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("Core");
>
> をヒットさせる方法はないのか、といった点をご教授いただけ
> ないでしょうか。
>
>
> バージョンは、下記のとおりです。
> senna-1.0.8
> mysql-5.0.45-tritonn-1.0.4
>
>
> 以上、お手数をおかけしますが何卒よろしくお願いいたします。
>
> _______________________________________________
> Senna-dev mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev

-------
島村 優太郎
yu****@irx*****




Senna-dev メーリングリストの案内
Back to archive index