diff options
author | unknown <serg@serg.mylan> | 2003-10-23 15:21:06 +0200 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2003-10-23 15:21:06 +0200 |
commit | aa98f58bae74bc25a557d146b7a1bae80217c342 (patch) | |
tree | 2ce015b91940f6ae6e70f56ba571010c4c8eb3f0 /myisam/ft_parser.c | |
parent | fd85cc84e4cad1f40e09af35265f47cf57750c49 (diff) | |
download | mariadb-git-aa98f58bae74bc25a557d146b7a1bae80217c342.tar.gz |
query expansion for fulltext search
myisam/ft_boolean_search.c:
assert.h and queues.h moved to ftdefs.h
myisam/ft_parser.c:
ft_parse() with alloc
myisam/ft_static.c:
api changes, ft_max_word_len_for_sort variable removed
myisam/ft_update.c:
ft_parse() with alloc
myisam/ftdefs.h:
variable ft_max_word_len_for_sort -> define FT_MAX_WORD_LEN_FOR_SORT
api changes, ft_max_word_len_for_sort variable removed
ft_parse() with alloc
myisam/mi_check.c:
variable ft_max_word_len_for_sort -> define FT_MAX_WORD_LEN_FOR_SORT
myisam/myisamchk.c:
ft_max_word_len_for_sort removed
mysql-test/r/fulltext.result:
query expansion tests
mysql-test/r/fulltext_var.result:
ft_max_word_len_for_sort removed
mysql-test/t/fulltext.test:
query expansion tests
sql/ha_myisam.h:
ft api changes for query expansion
sql/mysqld.cc:
ft_max_word_len_for_sort removed
ft_query_expansion_limit added
sql/set_var.cc:
ft_max_word_len_for_sort removed
ft_query_expansion_limit added
sql/sql_yacc.yy:
EXPANSION added to keyword: rule
Diffstat (limited to 'myisam/ft_parser.c')
-rw-r--r-- | myisam/ft_parser.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/myisam/ft_parser.c b/myisam/ft_parser.c index d6d1378bdae..8ab67aa9c6f 100644 --- a/myisam/ft_parser.c +++ b/myisam/ft_parser.c @@ -183,7 +183,7 @@ void ft_parse_init(TREE *wtree, CHARSET_INFO *cs) DBUG_VOID_RETURN; } -int ft_parse(TREE *wtree, byte *doc, int doclen) +int ft_parse(TREE *wtree, byte *doc, int doclen, my_bool with_alloc) { byte *end=doc+doclen; FT_WORD w; @@ -191,6 +191,15 @@ int ft_parse(TREE *wtree, byte *doc, int doclen) while (ft_simple_get_word(wtree->custom_arg, &doc,end,&w)) { + if (with_alloc) + { + byte *ptr; + /* allocating the data in the tree - to avoid mallocs and frees */ + DBUG_ASSERT(wtree->with_delete==0); + ptr=(byte *)alloc_root(& wtree->mem_root,w.len); + memcpy(ptr, w.pos, w.len); + w.pos=ptr; + } if (!tree_insert(wtree, &w, 0, wtree->custom_arg)) goto err; } |