namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

"oshirase" and "me-rusa-ba" problems



「お知らせ問題」について。

ChaSen を用いてインデックスを作成すると「お知らせ」が 1つの
単語として登録されます。しかし、検索時には「お」「知らせ」の
ように分割されてしまうため、検索できません。

「メールサーバ問題」について。

ChaSen を用いてインデックスを作成すると、「メールサーバ」は
「メール」「サーバ」と 2つの単語に分かれて登録されます。しか
し、検索時には「メールサーバ」のままで、分割されないため、検
索できません。

# 利用者側で分割すれば検索できるだけ、「お知らせ問題」よりは
# まし。(「お知らせ」はどうやっても検索できない)

なぜこんな事態が起きるかというと、

  * 検索時には自前でわかち書きをし、
  * その際にひらがな・カタカナを特別扱いする

からです。なぜ、ひらがな・カタカナを特別扱いするかというと、

  * 「コンピュータ」で検索したときに、
  * インデックスに「コンピュータ」が含まれず、
  * 「コン」「タ」はインデックスに含まれている

ような状況のときに、ひらがな・カタカナを特別扱いしないと、次
のように検索結果の表示が不気味になってしまうからです。

|  % namazu "コンピュータ"
|  参考ヒット数:  {  [ コン: 19 ]  [ ピ: 0 ] [ ュ: 0 ] [ ー:
|  0 ] [ タ: 5 ] :: 0 } 
|  
|  検索式にマッチする文書はありませんでした。

現在の実装では、ひらがな・カタカナから始めるわかち書はあり得
ない、という条件をつけています。よって、次の検索結果が得られ
ます。

|  % namazu "コンピュータ"
|  参考ヒット数:  [ コンピュータ: 0 ]
|  
|  検索式にマッチする文書はありませんでした。

この仕様を採用した経緯は
<http://ml.namazu.org/namazu-ml/avocado/thrd12.html#01126>
で読めます。

   ...

で、「お知らせ問題」と「メールサーバ問題」の解決策ですが、検
索式に新たな表記

  [この中は特別扱いしない] 

を導入して、 [] で囲まれた文字列を特別扱いしないようにすれば、
どちらもわかち書きされて、検索可能になります。場当たり的な解
決法ではありますが、手段がないよりはましだと思います。いかが
なものでしょう?

何かもっといい方法があるといいんだけど…。

p.s.
近日中に ChaSen 2.0 が公開されます。

-- Satoru Takabayashi