summaryrefslogtreecommitdiff
path: root/storage/mroonga/vendor/groonga/plugins/token_filters/stop_word.c
diff options
context:
space:
mode:
Diffstat (limited to 'storage/mroonga/vendor/groonga/plugins/token_filters/stop_word.c')
-rw-r--r--storage/mroonga/vendor/groonga/plugins/token_filters/stop_word.c49
1 files changed, 27 insertions, 22 deletions
diff --git a/storage/mroonga/vendor/groonga/plugins/token_filters/stop_word.c b/storage/mroonga/vendor/groonga/plugins/token_filters/stop_word.c
index 21451f00b25..054cd65aa37 100644
--- a/storage/mroonga/vendor/groonga/plugins/token_filters/stop_word.c
+++ b/storage/mroonga/vendor/groonga/plugins/token_filters/stop_word.c
@@ -16,7 +16,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <str.h>
+#include <grn_str.h>
#include <groonga.h>
#include <groonga/token_filter.h>
@@ -38,6 +38,10 @@ stop_word_init(grn_ctx *ctx, grn_obj *table, grn_token_mode mode)
{
grn_stop_word_token_filter *token_filter;
+ if (mode != GRN_TOKEN_GET) {
+ return NULL;
+ }
+
token_filter = GRN_PLUGIN_MALLOC(ctx, sizeof(grn_stop_word_token_filter));
if (!token_filter) {
GRN_PLUGIN_ERROR(ctx, GRN_NO_MEMORY_AVAILABLE,
@@ -83,28 +87,29 @@ stop_word_filter(grn_ctx *ctx,
void *user_data)
{
grn_stop_word_token_filter *token_filter = user_data;
+ grn_id id;
+ grn_obj *data;
+
+ if (!token_filter) {
+ return;
+ }
- if (token_filter->mode == GRN_TOKEN_GET) {
- grn_id id;
- grn_obj *data;
-
- data = grn_token_get_data(ctx, current_token);
- id = grn_table_get(ctx,
- token_filter->table,
- GRN_TEXT_VALUE(data),
- GRN_TEXT_LEN(data));
- if (id != GRN_ID_NIL) {
- GRN_BULK_REWIND(&(token_filter->value));
- grn_obj_get_value(ctx,
- token_filter->column,
- id,
- &(token_filter->value));
- if (GRN_BOOL_VALUE(&(token_filter->value))) {
- grn_tokenizer_status status;
- status = grn_token_get_status(ctx, current_token);
- status |= GRN_TOKENIZER_TOKEN_SKIP;
- grn_token_set_status(ctx, next_token, status);
- }
+ data = grn_token_get_data(ctx, current_token);
+ id = grn_table_get(ctx,
+ token_filter->table,
+ GRN_TEXT_VALUE(data),
+ GRN_TEXT_LEN(data));
+ if (id != GRN_ID_NIL) {
+ GRN_BULK_REWIND(&(token_filter->value));
+ grn_obj_get_value(ctx,
+ token_filter->column,
+ id,
+ &(token_filter->value));
+ if (GRN_BOOL_VALUE(&(token_filter->value))) {
+ grn_tokenizer_status status;
+ status = grn_token_get_status(ctx, current_token);
+ status |= GRN_TOKEN_SKIP;
+ grn_token_set_status(ctx, next_token, status);
}
}
}