[tracker/fts-limits: 1/2] Removed character-limits to FTS searching.
- From: Mikael Ottela <mottela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/fts-limits: 1/2] Removed character-limits to FTS searching.
- Date: Fri, 19 Feb 2010 19:35:04 +0000 (UTC)
commit bb1c445262462363693a6cafec9091c189e6c621
Author: Mikael Ottela <mikael ottela ixonos com>
Date: Fri Feb 19 02:51:29 2010 +0200
Removed character-limits to FTS searching.
src/libtracker-fts/tracker-fts.c | 6 +++---
src/libtracker-fts/tracker-parser.c | 10 +++++++---
src/libtracker-fts/tracker-parser.h | 3 ++-
tests/libtracker-fts/prefix/Makefile.am | 7 +++++++
tests/libtracker-fts/prefix/data.ontology | 23 +++++++++++++++++++++++
tests/libtracker-fts/prefix/fts3prefix-1.out | 3 +++
tests/libtracker-fts/prefix/fts3prefix-1.rq | 1 +
tests/libtracker-fts/prefix/fts3prefix-2.out | 5 +++++
tests/libtracker-fts/prefix/fts3prefix-2.rq | 1 +
tests/libtracker-fts/prefix/fts3prefix-data.rq | 13 +++++++++++++
tests/libtracker-fts/tracker-fts-test.c | 1 +
11 files changed, 66 insertions(+), 7 deletions(-)
---
diff --git a/src/libtracker-fts/tracker-fts.c b/src/libtracker-fts/tracker-fts.c
index f9d55ec..a58af78 100644
--- a/src/libtracker-fts/tracker-fts.c
+++ b/src/libtracker-fts/tracker-fts.c
@@ -3629,7 +3629,7 @@ static void snippetOffsetsOfColumn(
pVtab = pQuery->pFts;
nColumn = pVtab->nColumn;
- tracker_parser_reset (pVtab->parser, zDoc, nDoc, FALSE, TRUE, pVtab->stop_words, FALSE);
+ tracker_parser_reset (pVtab->parser, zDoc, nDoc, FALSE, TRUE, pVtab->stop_words, FALSE, FALSE);
aTerm = pQuery->pTerms;
nTerm = pQuery->nTerms;
@@ -4324,7 +4324,7 @@ static int tokenizeSegment(
int iCol;
int nTerm = 1;
- tracker_parser_reset (parser, pSegment, nSegment, FALSE, TRUE, v->stop_words, TRUE);
+ tracker_parser_reset (parser, pSegment, nSegment, FALSE, TRUE, v->stop_words, TRUE, FALSE);
while( 1 ){
const char *pToken;
@@ -4768,7 +4768,7 @@ int Catid,
if (!zText) return SQLITE_OK;
- tracker_parser_reset (parser, zText, strlen (zText), FALSE, TRUE, v->stop_words, FALSE);
+ tracker_parser_reset (parser, zText, strlen (zText), FALSE, TRUE, v->stop_words, FALSE, TRUE);
while( 1 ){
diff --git a/src/libtracker-fts/tracker-parser.c b/src/libtracker-fts/tracker-parser.c
index cf1d1e3..fb71ed9 100644
--- a/src/libtracker-fts/tracker-parser.c
+++ b/src/libtracker-fts/tracker-parser.c
@@ -82,6 +82,7 @@ struct TrackerParser {
guint min_word_length;
gboolean delimit_words;
gboolean parse_reserved_words;
+ gboolean limit_word_length;
/* Private members */
gchar *word;
@@ -323,7 +324,8 @@ parser_next (TrackerParser *parser,
}
if (!is_valid ||
- length < parser->min_word_length ||
+ (parser->limit_word_length &&
+ length < parser->min_word_length) ||
word_type == TRACKER_PARSER_WORD_NUM) {
word_type = TRACKER_PARSER_WORD_IGNORE;
is_valid = TRUE;
@@ -362,7 +364,7 @@ parser_next (TrackerParser *parser,
}
}
- if (length >= parser->max_word_length) {
+ if (parser->limit_word_length && length >= parser->max_word_length) {
continue;
}
@@ -504,7 +506,8 @@ tracker_parser_reset (TrackerParser *parser,
gboolean delimit_words,
gboolean enable_stemmer,
gboolean enable_stop_words,
- gboolean parse_reserved_words)
+ gboolean parse_reserved_words,
+ gboolean limit_word_length)
{
g_return_if_fail (parser != NULL);
g_return_if_fail (txt != NULL);
@@ -519,6 +522,7 @@ tracker_parser_reset (TrackerParser *parser,
parser->txt_size = txt_size;
parser->txt = txt;
parser->parse_reserved_words = parse_reserved_words;
+ parser->limit_word_length = limit_word_length;
g_free (parser->word);
parser->word = NULL;
diff --git a/src/libtracker-fts/tracker-parser.h b/src/libtracker-fts/tracker-parser.h
index 6e6b7fa..e16123d 100644
--- a/src/libtracker-fts/tracker-parser.h
+++ b/src/libtracker-fts/tracker-parser.h
@@ -38,7 +38,8 @@ void tracker_parser_reset (TrackerParser *parser,
gboolean delimit_words,
gboolean enable_stemmer,
gboolean enable_stop_words,
- gboolean parse_reserved_words);
+ gboolean parse_reserved_words,
+ gboolean limit_word_length);
const gchar * tracker_parser_next (TrackerParser *parser,
gint *position,
gint *byte_offset_start,
diff --git a/tests/libtracker-fts/prefix/Makefile.am b/tests/libtracker-fts/prefix/Makefile.am
new file mode 100644
index 0000000..7a39f1e
--- /dev/null
+++ b/tests/libtracker-fts/prefix/Makefile.am
@@ -0,0 +1,7 @@
+include $(top_srcdir)/Makefile.decl
+
+EXTRA_DIST = \
+ data.ontology \
+ fts3prefix-data.rq \
+ fts3prefix-1.rq \
+ fts3prefix-2.rq
diff --git a/tests/libtracker-fts/prefix/data.ontology b/tests/libtracker-fts/prefix/data.ontology
new file mode 100644
index 0000000..d865fe1
--- /dev/null
+++ b/tests/libtracker-fts/prefix/data.ontology
@@ -0,0 +1,23 @@
+ prefix fts: <http://www.tracker-project.org/ontologies/fts#> .
+ prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+ prefix test: <http://www.example.org/test#> .
+ prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+fts: a tracker:Namespace ;
+ tracker:prefix "fts" .
+
+test: a tracker:Namespace ;
+ tracker:prefix "test" .
+
+test:A a rdfs:Class ;
+ rdfs:subClassOf rdfs:Resource .
+
+test:p a rdf:Property ;
+ nrl:maxCardinality 1 ;
+ rdfs:domain test:A ;
+ rdfs:range xsd:string ;
+ tracker:fulltextIndexed true .
+
diff --git a/tests/libtracker-fts/prefix/fts3prefix-1.out b/tests/libtracker-fts/prefix/fts3prefix-1.out
new file mode 100644
index 0000000..ff6290b
--- /dev/null
+++ b/tests/libtracker-fts/prefix/fts3prefix-1.out
@@ -0,0 +1,3 @@
+"http://www.example.org/test#4"
+"http://www.example.org/test#5"
+"http://www.example.org/test#8"
diff --git a/tests/libtracker-fts/prefix/fts3prefix-1.rq b/tests/libtracker-fts/prefix/fts3prefix-1.rq
new file mode 100644
index 0000000..3ad76d9
--- /dev/null
+++ b/tests/libtracker-fts/prefix/fts3prefix-1.rq
@@ -0,0 +1 @@
+SELECT ?o WHERE { ?o fts:match "trac*" }
diff --git a/tests/libtracker-fts/prefix/fts3prefix-2.out b/tests/libtracker-fts/prefix/fts3prefix-2.out
new file mode 100644
index 0000000..85d8792
--- /dev/null
+++ b/tests/libtracker-fts/prefix/fts3prefix-2.out
@@ -0,0 +1,5 @@
+"http://www.example.org/test#3"
+"http://www.example.org/test#4"
+"http://www.example.org/test#5"
+"http://www.example.org/test#6"
+"http://www.example.org/test#8"
diff --git a/tests/libtracker-fts/prefix/fts3prefix-2.rq b/tests/libtracker-fts/prefix/fts3prefix-2.rq
new file mode 100644
index 0000000..7127fa2
--- /dev/null
+++ b/tests/libtracker-fts/prefix/fts3prefix-2.rq
@@ -0,0 +1 @@
+SELECT ?o WHERE { ?o fts:match "tr*" }
diff --git a/tests/libtracker-fts/prefix/fts3prefix-data.rq b/tests/libtracker-fts/prefix/fts3prefix-data.rq
new file mode 100644
index 0000000..e84145f
--- /dev/null
+++ b/tests/libtracker-fts/prefix/fts3prefix-data.rq
@@ -0,0 +1,13 @@
+INSERT {
+ test:1 a test:A ; test:p "t" .
+ test:2 a test:A ; test:p "tr" .
+ test:3 a test:A ; test:p "tra" .
+ test:4 a test:A ; test:p "tracker test" .
+ test:5 a test:A ; test:p "tracking tester" .
+ test:6 a test:A ; test:p "trash trash more trash" .
+ test:7 a test:A ; test:p "racker ester" .
+ test:8 a test:A ; test:p "TeStiNg TraCkEr" .
+ test:9 a test:A ; test:p "Prefix search with content" .
+ test:10 a test:A ; test:p "...and a one bit more here" .
+}
+
diff --git a/tests/libtracker-fts/tracker-fts-test.c b/tests/libtracker-fts/tracker-fts-test.c
index 777ae6e..9421323 100644
--- a/tests/libtracker-fts/tracker-fts-test.c
+++ b/tests/libtracker-fts/tracker-fts-test.c
@@ -43,6 +43,7 @@ struct _TestInfo {
const TestInfo tests[] = {
{ "fts3aa", 2 },
{ "fts3ae", 1 },
+ { "prefix/fts3prefix", 2 },
{ NULL }
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]