morit****@razil*****
morit****@razil*****
2009年 9月 23日 (水) 09:37:46 JST
森です。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > In <20090****@epepe*****> > "[groonga-dev,00203] Re: 末尾に:をもつ項が最初にあるクエリでSEGVする" on Tue, 22 Sep 2009 14:54:35 +0900, > morit****@razil***** wrote: > > > なお、grn_expr_parse()関数のparse_level引数に、2〜3を指定したときに限り、 > > > > カラム名:値 > > > > のような文字列を、カラム検索条件として解釈するようにしました。 > > > > したがって、 > > > > "photo:" > > > > のようなクエリは以下のように解釈されます。 > > > > parse_levelに0〜1を指定した場合: > > > > 単なる文字列として解釈されます。 > > > > parse_levelに2〜3を指定した場合: > > > > "photo"という名前のカラムに対する検索条件として解釈されます。 > > 名前に一致するカラムが存在しない場合はエラーが返ります。 > > 実は、parse_levelという名前に違和感があったのですが、やっぱり、 > levelじゃないと思うんです。 > > levelだと互換性を保ちながら段階的に新しい機能が追加されてい > くイメージがあるのですが、1 -> 2に変わったときは、既存の文法 > の意味が変わってしまうので互換性がありませんよね。たぶん、そ > こが違和感の原因だと思います。 > > > ということで、parse_levelをparserにするのはどうでしょうか? > (内部的にはparserじゃなくてlexerかと思いますが) > 例えば、こんな感じです。 > > * parse_level: 0-1: → GRN_EXPR_PARSER_COLUMN_QUERY > * parse_level: 2-3: → GRN_EXPR_PARSER_TABLE_QUERY > * parse_level: 4: → GRN_EXPR_PARSER_EXPRESSION > > 4はexpressionよりlanguageの方がよいかもしれませんが、イメー > ジはこんな感じです。 > > どんなもんでしょうか? そうですねー。確かにparse_levelはしっくり来ないのですが、 PARSER_*のそれぞれ適切な名前付けが難しく、まだまとまっていない状態です。 いずれにしても、現状のように数値で指定するのはやめて、 enum型で宣言するか、flagにするか、もっと適切な仕様に改めたいと思います。 > -- > 須藤 功平 <kou****@clear*****> > 株式会社クリアコード (http://www.clear-code.com/) > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/groonga-dev > -- morita