正規表現検索式の大文字"\D"が小文字"\d"として処理される他の不具合 ― 2005年12月28日 01時14分33秒
Namazuでは大文字/小文字の区別を行わないため、インデックス作成時に小文字に変換して単語を登録します。
このため入力された検索式は、小文字に変換してインデックスの検索を行います。
この時、検索式を無条件で小文字に変換しており、正規表現の \W \S \D \A \Z \B \G や文字クラス指定も、小文字に変換されるという不具合がありました。
特にNamazuでは小文字しか存在しないので、文字クラス指定が小文字に変換されたとしても特に影響はありませんが、\W \S \D \A \Z \B \G が小文字に変換されると意味が異なります。
このため、正規表現検索式では '\' の後の文字は小文字に変換しないようにしました。
(HEAD, stable-2-0共通)
このため入力された検索式は、小文字に変換してインデックスの検索を行います。
この時、検索式を無条件で小文字に変換しており、正規表現の \W \S \D \A \Z \B \G や文字クラス指定も、小文字に変換されるという不具合がありました。
特にNamazuでは小文字しか存在しないので、文字クラス指定が小文字に変換されたとしても特に影響はありませんが、\W \S \D \A \Z \B \G が小文字に変換されると意味が異なります。
このため、正規表現検索式では '\' の後の文字は小文字に変換しないようにしました。
(HEAD, stable-2-0共通)
フレーズ検索式内に正規表現、部分一致検索式を記述した場合の不具合 ― 2005年12月28日 01時31分10秒
単語検索式あるいはフレーズ検索式の中身をわかち書きした後、それぞれが単語検索、フレーズ検索になるか再度調べ直す必要があります。
この判定に誤りがあり、正規表現検索式や部分一致検索式を記述した場合に誤認します。
例えば、
{/Nam.*/}
とすると、/Na..../ で正規表現検索として検索を行います。
{/Nam.*/ Manual}
だと、/Nam.*/ や Manual を単語検索した上でフレーズ検索処理を行います。
フレーズ検索では1つ以上の単語検索の組合せを仮定しているので、やはり、前者の場合も /Nam.*/ という単語検索として処理を行うべきです。
分かち書きの区切りの'\t'が含まれる場合は、フレーズ検索、それ以外は全て単語検索と判定するように修正しました。
(HEAD, stable-2-0共通)
この判定に誤りがあり、正規表現検索式や部分一致検索式を記述した場合に誤認します。
例えば、
{/Nam.*/}
とすると、/Na..../ で正規表現検索として検索を行います。
{/Nam.*/ Manual}
だと、/Nam.*/ や Manual を単語検索した上でフレーズ検索処理を行います。
フレーズ検索では1つ以上の単語検索の組合せを仮定しているので、やはり、前者の場合も /Nam.*/ という単語検索として処理を行うべきです。
分かち書きの区切りの'\t'が含まれる場合は、フレーズ検索、それ以外は全て単語検索と判定するように修正しました。
(HEAD, stable-2-0共通)
最近のコメント