[Senna-dev 442] クエリ式に含まれる単語の取得

Zurück zum Archiv-Index

Yoshihiro Oyama yos-o****@smile*****
2007年 1月 23日 (火) 02:06:47 JST


はじめまして。

sen_queryからクエリ式に含まれる単語の一覧を取得したいです。
こんな感じのAPIがあるといいなと思うんですが
いかがでしょうか?

--------------------------
senna.h に追加

typedef int(*query_term_callback)(const char*,size_t,void*);

void sen_query_term(sen_query *q,query_term_callback func,void* func_arg );

--------------------------
query.c に追加

static int query_term_rec( sen_query* q,cons* c,query_term_callback func,void* func_arg ){
	cons *token;
	if( c->type == cons_token ){
		return func(c->u.token.start,c->u.token.len,func_arg);
	}
	for( token = c->u.expr.car; token; token = token->cdr ){
		if(!query_term_rec(q,token,func,func_arg)){
			return 0; /* abort */
		}
	}
	return 1; /* continue */
}
void sen_query_term(sen_query *q,query_term_callback func,void* func_arg ){
	query_term_rec( q,q->expr,func,func_arg);
}

--------------------------
使用例

int my_query_term_callback(const char* term,size_t len,void* func_arg){
	int& n = *(int*)func_arg;
	printf("term[%d]=%.*s\n",n++,len,term);
	return 1;
	/* if return 0,abort enum */
}

int n=0;
sen_query_term(sq,&my_query_term_callback,&n);

--------------------------


Yoshihiro Oyama yos-o****@smile*****



Senna-dev メーリングリストの案内
Zurück zum Archiv-Index