8

単語のリストを含むテーブルがあります。

単語 VARCHAR(16)

逆索引を作成する必要があります。すなわち。たとえば、「apple」という単語は「elppa」、「banana」という単語は「ananab」などのように索引付けされます。

また、例えば単語の一部を索引付けすることは可能ですか? たとえば、最初/最後の 1 文字または 2 文字をスキップします。

pple (りんご) anana (バナナ)

これらのことは可能ですか?

4

1 に答える 1

8

プレフィックスの長さによって制限されているフィールドにインデックスを作成できます。つまり、最初の n 文字のみが考慮されますが、任意の開始位置と終了位置では作成できません。詳細については、mysql のCREATE INDEXドキュメント ページを参照してください。

この場合、別の列を作成し、mysql のREVERSE関数を使用して入力し、その上にインデックスを作成します。これにより、元の単語の逆を検索するフィールドを取得できます。

Postgresql などの他のデータベースでは、式にインデックスreverse(col_name)を付けることができます。これにより、余分な列を作成せずに効果的にインデックスを作成できます。そのため、現在 mysql を使用していないだけで可能です。(バージョン9のpotgresqlにはreverse()ネイティブがあるため、私は信じています)

于 2012-06-09T00:58:08.510 に答える