[tracker] tracker-search: Warn about using stopwords as search terms



commit dd413866582f89b7b249596d4da78d3794df724d
Author: Martyn Russell <martyn lanedo com>
Date:   Fri Jan 15 15:45:56 2010 +0000

    tracker-search: Warn about using stopwords as search terms

 src/libtracker-common/tracker-language.c |    4 +-
 src/tracker-utils/tracker-search.c       |   41 ++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 2 deletions(-)
---
diff --git a/src/libtracker-common/tracker-language.c b/src/libtracker-common/tracker-language.c
index 324317e..aef5893 100644
--- a/src/libtracker-common/tracker-language.c
+++ b/src/libtracker-common/tracker-language.c
@@ -283,7 +283,7 @@ language_set_stopword_list (TrackerLanguage *language,
 	priv = GET_PRIV (language);
 
 	/* Set up stopwords list */
-	g_message ("Setting up stopword list for language code:'%s'", language_code);
+	/* g_message ("Setting up stopword list for language code:'%s'", language_code); */
 
 	stopword_filename = language_get_stopword_filename (language_code);
 	language_add_stopwords (language, stopword_filename);
@@ -295,7 +295,7 @@ language_set_stopword_list (TrackerLanguage *language,
 		g_free (stopword_filename);
 	}
 
-	g_message ("Setting up stemmer for language code:'%s'", language_code);
+	/* g_message ("Setting up stemmer for language code:'%s'", language_code); */
 
 	stem_language = tracker_language_get_name_by_code (language_code);
 	stem_language_lower = g_ascii_strdown (stem_language, -1);
diff --git a/src/tracker-utils/tracker-search.c b/src/tracker-utils/tracker-search.c
index 21f1bc3..c1195e6 100644
--- a/src/tracker-utils/tracker-search.c
+++ b/src/tracker-utils/tracker-search.c
@@ -774,6 +774,10 @@ main (int argc, char **argv)
 {
 	TrackerClient *client;
 	GOptionContext *context;
+	TrackerLanguage *language;
+	GHashTable *stop_words;
+	const gchar *stop_word_found;
+	gchar **p;
 	gchar *summary;
 
 	setlocale (LC_ALL, "");
@@ -829,6 +833,43 @@ main (int argc, char **argv)
 		return EXIT_FAILURE;
 	}
 
+	g_type_init ();
+
+	if (!g_thread_supported ()) {
+		g_thread_init (NULL);
+	}
+
+	/* Check terms are not stopwords */
+	language = tracker_language_new (NULL);
+	stop_words = tracker_language_get_stop_words (language);
+
+	for (p = terms, stop_word_found = NULL; *p && !stop_word_found; p++) {
+		gpointer data;
+
+		data = g_hash_table_lookup (stop_words, *p);
+		if (data) {
+			stop_word_found = *p;
+		}
+	}
+
+	if (stop_word_found) {
+		g_printerr (_("Search term '%s' is a stop word."),
+		            stop_word_found);
+		g_printerr ("\n\n");
+		g_printerr (_("Stop words are common words which are "
+		              "ignored during the indexing process."));
+		g_printerr ("\n");
+		g_printerr (_("This means this search term will never "
+		              "be found when matching FTS entries."));
+		g_printerr ("\n\n");
+
+		g_option_context_free (context);
+		g_object_unref (language);
+
+		return EXIT_FAILURE;
+	}
+
+	g_object_unref (language);
 	g_option_context_free (context);
 
 	client = tracker_client_new (0, G_MAXINT);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]