# 7.9.4. `TokenFilterStopWord`

## 7.9.4.1. 概要

`TokenFilterStopWord` は、文書を検索する時にトークナイズされたトークンからストップワードを除去します。

`TokenFilterStopWord` は、文書を検索する時のみトークン除去するため、文書を追加した後でストップワードを指定することもできます。

`column` オプションを指定しない場合、ストップワードは、語彙表の `is_stop_word` カラムで指定されます。

## 7.9.4.2. 構文

`TokenFilterStopWord` は、省略可能な引数があります。

    TokenFilterStopWord

    TokenFilterStopWord("column", "ignore")

## 7.9.4.3. 使い方

以下は `TokenFilterStopWord` トークンフィルターを使う例です。

実行例:

    plugin_register token_filters/stop_word
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    table_create Memos TABLE_NO_KEY
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Memos content COLUMN_SCALAR ShortText
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    table_create Terms TABLE_PAT_KEY ShortText \
      --default_tokenizer TokenBigram \
      --normalizer NormalizerAuto \
      --token_filters TokenFilterStopWord
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Terms memos_content COLUMN_INDEX|WITH_POSITION Memos content
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    column_create Terms is_stop_word COLUMN_SCALAR Bool
    # [[0, 1337566253.89858, 0.000355720520019531], true]
    load --table Terms
    [
    {"_key": "and", "is_stop_word": true}
    ]
    # [[0, 1337566253.89858, 0.000355720520019531], 1]
    load --table Memos
    [
    {"content": "Hello"},
    {"content": "Hello and Good-bye"},
    {"content": "Good-bye"}
    ]
    # [[0, 1337566253.89858, 0.000355720520019531], 3]
    select Memos --match_columns content --query "Hello and"
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         2
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "content",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         "Hello"
    #       ],
    #       [
    #         2,
    #         "Hello and Good-bye"
    #       ]
    #     ]
    #   ]
    # ]

`and` というトークンは `Terms` テーブルでストップワードと指定されています。

`"Hello"` は文書内に `and` がありませんがマッチしています。なぜなら、 `and` はストップワードと指定されているため、クエリーから除去されているからです。

以下のように `columns` オプションを使って `is_stop_columns` 以外のカラムをストップワードに指定できます。

実行例:

    plugin_register token_filters/stop_word
    table_create Memos TABLE_NO_KEY
    column_create Memos content COLUMN_SCALAR ShortText
    table_create Terms TABLE_PAT_KEY ShortText \
      --default_tokenizer TokenBigram \
      --normalizer NormalizerAuto \
      --token_filters 'TokenFilterStopWord("column", "ignore")'
    column_create Terms memos_content COLUMN_INDEX|WITH_POSITION Memos content
    column_create Terms ignore COLUMN_SCALAR Bool
    load --table Terms
    [
    {"_key": "and", "ignore": true}
    ]
    load --table Memos
    [
    {"content": "Hello"},
    {"content": "Hello and Good-bye"},
    {"content": "Good-bye"}
    ]
    select Memos --match_columns content --query "Hello and"
    # [
    #   [
    #     0,
    #     0.0,
    #     0.0
    #   ],
    #   [
    #     [
    #       [
    #         2
    #       ],
    #       [
    #         [
    #           "_id",
    #           "UInt32"
    #         ],
    #         [
    #           "content",
    #           "ShortText"
    #         ]
    #       ],
    #       [
    #         1,
    #         "Hello"
    #       ],
    #       [
    #         2,
    #         "Hello and Good-bye"
    #       ]
    #     ]
    #   ]
    # ]

## 7.9.4.4. 引数

### 7.9.4.4.1. 省略可能引数

省略可能な引数 `columns` があります。

#### 7.9.4.4.1.1. `columns`

ストップワードを指定するカラムを指定します。