« Trac/タイトルに手を加える | Main | Excelの入力規則・リストに名前を付ける »

2010.11.11

Trac/同義語検索の不具合

Trac/同義語検索機能を追加する に関してですが、今さらではありますが不具合を見つけてしまいました・・・。

複数の語で検索を行った場合、そのうちの一部の単語に対して同義語が定義されていた場合、検索用のSQLを正しく構築することができず、TypeError: not enough arguments for format string が発生していまいます。

確かに、同義語検索機能のテストを行っている時は、「1単語」での検索しかテストしていなかったような・・・。

しかしして、どうやって直しましょうかね・・・。2単語のうち、1単語のみ同義語が定義されている場合もあれば、両方に同義語が定義されている場合もあるかと思います。それにより、構築するSQL文が変わってくるわけですが、3単語以上が入力されていた場合は・・・と言ったことを考えていくと、きりがないかも。

2単語のうち、1単語のみ同義語が定義されている場合は

A and B or A' and B

でOKですが、両方の単語に同義語が定義されていた場合、
A and B or A' and B or A and B' or A' and B'

となります。

3単語の場合、1単語のみ同義語が定義されていた場合、

A and B and C or A' and B and C

でいいのですが、2単語に同義語が定義されていると、
A and B and C or A' and B and C or A and B' and C or A' and B' and C

3単語全てに同義語が定義されていた場合は、8通りの条件をorで連結することになります。

4単語以上になると、2のn条でどんどんと面倒なことに(当然、パフォーマンスにも大きく影響してくるでしょうし)。

2単語以上で検索された場合は、「同義語検索」を無効にすることでとりあえず回避はできますが、それだと何のための機能かよくわからなくなってしまいますし。何かいい方法ないですかね・・・。

|

« Trac/タイトルに手を加える | Main | Excelの入力規則・リストに名前を付ける »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/49975007

Listed below are links to weblogs that reference Trac/同義語検索の不具合:

« Trac/タイトルに手を加える | Main | Excelの入力規則・リストに名前を付ける »