« 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


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

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