プロジェクトに高度な検索を実装したいと考えています。現在の検索では、ユーザーが入力したすべての文字列が使用され、Criteria API との 1 つの大きな論理和が作成されます。
これで問題なく動作しますが、さらに多くの機能を実装したいと思います: AND、OR、ブラケット()
文字列を解析し、文字列から基準を構築するのに苦労しました。私はこの Stackoverflow questionを見つけましたが、実際には役に立ちませんでした (彼は自分が何を望んでいるのかを明確にしませんでした)。
別の記事を見つけましたが、これはさらに多くのことをサポートし、SQL ステートメントを吐き出します。もう 1 つよく言及されているのは Lucene ですが、これが本当に役立つかどうかはわかりません。
少し調べてみたところ、Lucene.Net WhitespaceAnalyzer と QueryParser が見つかりました。
検索 A AND B OR C を +A +BC のようなものに変更します。これは、正しい方向への良い一歩です (さらに、括弧を処理します)。次のステップは、変換された文字列を接続詞と論理和のセットに取得することです。
私が見つけたJava の例は、NHibernate では見つけられなかったクエリ ビルダーを使用していました。
もっとアイデアはありますか?