From 8a04d0256b795bd3c13764d8ba036a72eec5a6f0 Mon Sep 17 00:00:00 2001 From: Sebastian Hammer Date: Wed, 18 Apr 2007 19:45:09 +0000 Subject: [PATCH] Fixed bug 854. Using nmem_split() to split phrase terms on word boundaries. I love nmem_split. If I were not a family man, I would ask her to marry me. --- src/logic.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/logic.c b/src/logic.c index 9a037d1..c581f2d 100644 --- a/src/logic.c +++ b/src/logic.c @@ -1,4 +1,4 @@ -/* $Id: logic.c,v 1.8 2007-04-18 16:11:41 quinn Exp $ +/* $Id: logic.c,v 1.9 2007-04-18 19:45:09 quinn Exp $ Copyright (c) 2006-2007, Index Data. This file is part of Pazpar2. @@ -206,8 +206,13 @@ static void send_init(IOCHAN i) odr_reset(global_parameters.odr_out); } +// Recursively traverse query structure to extract terms. static void pull_terms(NMEM nmem, struct ccl_rpn_node *n, char **termlist, int *num) { + char **words; + int numwords; + int i; + switch (n->kind) { case CCL_RPN_AND: @@ -218,7 +223,9 @@ static void pull_terms(NMEM nmem, struct ccl_rpn_node *n, char **termlist, int * pull_terms(nmem, n->u.p[1], termlist, num); break; case CCL_RPN_TERM: - termlist[(*num)++] = nmem_strdup(nmem, n->u.t.term); + nmem_strsplit(nmem, " ", n->u.t.term, &words, &numwords); + for (i = 0; i < numwords; i++) + termlist[(*num)++] = words[i]; break; default: // NOOP break; -- 1.7.10.4