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*****