小さなデータベースに NexusDB を使用しています。FulltextIndex が定義されたテーブルがあります。インデックスは、次のオプションで構成されます。
- 文字区切り
- cc句読点ダッシュ
- cc句読点その他
ユーザーが編集ボックスに検索テキストを入力すると、次の WHERE 句で SQL ステートメントが作成されます (%s はもちろん Editbox.text に置き換えられます)。
WHERE CONTAINS(FullIdx, ''%s'')
ユーザーが編集ボックスに複数の単語を入力すると、次のように 2 つの別個の単語が WHERE 句に埋め込まれている必要があるため、これはうまくいきません。
WHERE CONTAINS(FullIdx, 'word1' and 'word2')
したがって、テキストボックスの値を解析し、スペースをスキャンして、それらのポイントでテキストを分割する必要があります。そのため、fulltextindex の実際の定義を使用して正しい where 句を作成し、fulltextindex の設定ごとに検索テキストを解析できるかどうか疑問に思いました。
そのため、FulltextIndex 定義で ccPunctuationDash が有効になっている場合、検索テキストも「-」で分割されます。
考えてみれば、インデックスが作成されてすべての文字列がトークン化されるときとまったく同じプロセスです...
私の質問: FULLtextIndex の設定に従って検索文字列をトークン化する最も簡単な方法は何ですか?