この付録では、ストップワード変換について説明します。この付録の内容は次のとおりです。
ストップワードまたはストップワードのみからなる句を問合せ演算子のオペランドとして使用すると、Oracle Textは式を書き換えてストップワードまたはストップワードのみからなる句を排除した後、問合せを実行します。
次の項では、それぞれの演算子に対するストップワードの書換え(変換)について説明します。すべての表のストップワード式の列では、問合せ式または問合せ式のコンポーネントを示します。また、右側の列では、Oracle Textによる問合せの書換えを示します。
トークンstopwordは、ストップワードまたはストップワードのみからなる句を表します。
トークンnon_stopwordは、ストップワード以外のワード、ストップワード以外のワードのみからなる句、ストップワード以外のワードとストップワードの両方で構成される句のいずれかを表します。
トークンno_lexは、ストップワードでもなく、索引が作成されるワードでもない、単一文字または文字列を表します。たとえば、トークンno_lexの例として単独の文字+があります。
ストップワード式の列で問合せ式を示している場合、変換後の式no_tokenは、この問合せを入力するとヒットが戻らないことを意味します。
ストップワード式の列で複数の演算子のある問合せ式のコンポーネントを示している場合、変換後の式no_tokenは、no_tokenの値が変換後の式の次の段階に渡されることを意味します。
ストップワード式の列でオペランドとしてno_tokenが指定されている変換は、no_tokenが前の変換の結果となる、中間の変換を示します。この中間の変換は、元の問合せ式に少なくとも1つのストップワードおよび複数の演算子がある場合に適用されます。
たとえば、次のコンパウンド問合せ式について考えます。
'(this NOT dog) AND cat'
この式でのストップワードがthisのみの場合、Oracle Textは次の順に次の変換を適用します。
stopword NOT non-stopword => no_token
no_token AND non_stopword => non_stopword
結果式は次のとおりです。
'cat'
| ストップワード式 | 変換後の式 |
|---|---|
| stopword | no_token |
| no_lex | no_token |
最初の変換は、問合せ式でのストップワードまたはストップワードのみからなる句自体はヒットを戻さないことを意味します。
2番目の変換は、+のように索引が作成されない問合せ語句は、ヒットを戻さないことを表しています。
| ストップワード式 | 変換後の式 |
|---|---|
| non_stopword AND stopword | non_stopword |
| non_stopword AND no_token | non_stopword |
| stopword AND non_stopword | non_stopword |
| no_token AND non_stopword | non_stopword |
| stopword AND stopword | no_token |
| no_token AND stopword | no_token |
| stopword AND no_token | no_token |
| no_token AND no_token | no_token |
| ストップワード式 | 変換後の式 |
|---|---|
| non_stopword OR stopword | non_stopword |
| non_stopword OR no_token | non_stopword |
| stopword OR non_stopword | non_stopword |
| no_token OR non_stopword | non_stopword |
| stopword OR stopword | no_token |
| no_token OR stopword | no_token |
| stopword OR no_token | no_token |
| no_token OR no_token | no_token |
| ストップワード式 | 変換後の式 |
|---|---|
| non_stopword ACCUM stopword | non_stopword |
| non_stopword ACCUM no_token | non_stopword |
| stopword ACCUM non_stopword | non_stopword |
| no_token ACCUM non_stopword | non_stopword |
| stopword ACCUM stopword | no_token |
| no_token ACCUM stopword | no_token |
| stopword ACCUM no_token | no_token |
| no_token ACCUM no_token | no_token |
| ストップワード式 | 変換後の式 |
|---|---|
| non_stopword MINUS stopword | non_stopword |
| non_stopword MINUS no_token | non_stopword |
| stopword MINUS non_stopword | no_token |
| no_token MINUS non_stopword | no_token |
| stopword MINUS stopword | no_token |
| no_token MINUS stopword | no_token |
| stopword MINUS no_token | no_token |
| no_token MINUS no_token | no_token |
| ストップワード式 | 変換後の式 |
|---|---|
| non_stopword NOT stopword | non_stopword |
| non_stopword NOT no_token | non_stopword |
| stopword NOT non_stopword | no_token |
| no_token NOT non_stopword | no_token |
| stopword NOT stopword | no_token |
| no_token NOT stopword | no_token |
| stopword NOT no_token | no_token |
| no_token NOT no_token | no_token |
| ストップワード式 | 変換後の式 |
|---|---|
| non_stopword EQUIV stopword | non_stopword |
| non_stopword EQUIV no_token | non_stopword |
| stopword EQUIV non_stopword | non_stopword |
| no_token EQUIV non_stopword | non_stopword |
| stopword EQUIV stopword | no_token |
| no_token EQUIV stopword | no_token |
| stopword EQUIV no_token | no_token |
| no_token EQUIV no_token | no_token |
|
注意: 問合せ実行計画を使用する場合は、すべてのEQUIVALENCE変換が EXPLAIN表に表示されるわけではありません。 |
| ストップワード式 | 変換後の式 |
|---|---|
| non_stopword NEAR stopword | non_stopword |
| non_stopword NEAR no_token | non_stopword |
| stopword NEAR non_stopword | non_stopword |
| no_token NEAR non_stopword | non_stopword |
| stopword NEAR stopword | no_token |
| no_token NEAR stopword | no_token |
| stopword NEAR no_token | no_token |
| no_token NEAR no_token | no_token |