単語のリストを含むテーブルがあります。
単語 VARCHAR(16)
逆索引を作成する必要があります。すなわち。たとえば、「apple」という単語は「elppa」、「banana」という単語は「ananab」などのように索引付けされます。
また、例えば単語の一部を索引付けすることは可能ですか? たとえば、最初/最後の 1 文字または 2 文字をスキップします。
pple (りんご) anana (バナナ)
これらのことは可能ですか?
プレフィックスの長さによって制限されているフィールドにインデックスを作成できます。つまり、最初の n 文字のみが考慮されますが、任意の開始位置と終了位置では作成できません。詳細については、mysql のCREATE INDEXドキュメント ページを参照してください。
この場合、別の列を作成し、mysql のREVERSE関数を使用して入力し、その上にインデックスを作成します。これにより、元の単語の逆を検索するフィールドを取得できます。
Postgresql などの他のデータベースでは、式にインデックスreverse(col_name)
を付けることができます。これにより、余分な列を作成せずに効果的にインデックスを作成できます。そのため、現在 mysql を使用していないだけで可能です。(バージョン9のpotgresqlにはreverse()ネイティブがあるため、私は信じています)