Monday独自QueryParserの作成(4)検索式演算子の優先度AND/OR/NOTの演算子を含む検索式を正しくBooleanQueryに展開するために、演算子の「結合規則」や「優先順位」を決める必要がある。「結合規則」はすべて=>となっており、これは「左結合」を意味する。A」のようなNOTについてはのちほど考えることにする。演算子を省略した場合は初回に決めたMyQueryParserの仕様どおりANDと解釈する。<RP>これらの生成規則を前出の表の優先順位に沿って組み合わせていく。最初は被演算子の式を表現する生成規則を使ってphraseExpr()を作成する。<RP>次に、表の中でもっとも優先度の高いAND演算子の生成規則を作成する。)*ここで、leftExpr()の右辺のhigherExpr()は優先順位が上位のphraseExpr()に置き換えられている。)*""を認識する次に「"(ダブルクオーテーション)」でくくられた検索質問語を認識するように修正を加える。<RP>ここで、「"」は<QUOTE>という表現に置き換えている。A」というフォーマットの検索式をサポートするように修正を加える。ここで使われるNOTは前出の二項演算子のNOTとは異なり単項演算子である。(数式の単項演算子"-"(マイナス)とは異なり)検索式の途中には出現せず、常に先頭にのみ使われる。defaultExpr()」であると考えてよい。<RP>}次回は上記JavaCCのコードにアクションを記述する。検索禁止語への対応は(JavaCCではなく)Javaのプログラムでおこなうため、アクションを記述したあとに考える。|コメントいつも拝読させていただいております。見ると異様に大量の空白行が表示されるようです。|インギさん、こんにちは。なんでそうなってしまうのか、よくわからないのですが。|コメントするname:email:url:comments:Cookieに登録この記事のトラックバックURLトラックバック機能は終了しました。比較のポイント商用検索エンジンを購入した企業担当者は読まないでください。McCandlessFastVectorHighlighterについて解説記事を寄稿しました。