• ベストアンサー

◆kakasi or chasenでの人名登録

いつもお世話になっています。 質問場所が的確か定かではありませんが。。。 Namazu + (kakasi or chasen)を使って日本語全文検索を作っています。 しかし人名登録で以下の問題が出てきました。 例「長島茂男」 これだと「長島」と「茂男」でヒットするが「長島茂男」でヒットしない。 ユーザー辞書登録で「長島茂男」を登録すると、「長島茂男」はヒットするようになるが、今度は逆に「長島」と「茂男」がヒットしなくなる。 何か解決策(回避)はあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • uwi
  • ベストアンサー率74% (55/74)
回答No.1

Namazu がわかち書きベースなので、基本的には仕様です。その癖を理解して「長島」と「茂男」で検索するというのが一般的です。 昔、Namazu + MeCabにして辞書登録しつつ # $MECAB = "module_mecab -a -Owakati"; とか強引にやった記憶がありますが、やめた方がいいです。 どうしてもというなら辞書をいじるよりN-gramベースの全文検索システムを導入した方が早いです。 Hyper Estraier は結構簡単に構築できた記憶があります。 http://hyperestraier.sourceforge.net/index.ja.html

参考URL:
http://hyperestraier.sourceforge.net/index.ja.html

その他の回答 (1)

  • YkazubonY
  • ベストアンサー率30% (26/86)
回答No.2

SQL Serverの「フルテキスト検索」を使う方法もあります. インデックステーブル作成例: USE MYDB CREATE FULLTEXT CATALOG ftMYDB AS DEFAULT; CREATE FULLTEXT INDEX ON dbo.Main(MYOUJI,NAMAE) KEY INDEX PK_MYDB; GO SQL文による検索例: USE MYDB SELECT KEY_TBL.RANK, MYOUJI, NAMAE FROM Main INNER JOIN CONTAINSTABLE (Main, *, '補下ほげ男') AS KEY_TBL ON Main.ID = KEY_TBL.[KEY] ORDER BY KEY_TBL.RANK DESC GO GUI部分は、DOT.NETで作成します.

関連するQ&A