You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-commits@lucene.apache.org by ro...@apache.org on 2005/06/26 11:59:29 UTC
svn commit: r201822 - in /incubator/lucene4c/trunk: include/lcn_field.h
src/cmdline/main.c src/document/field.cxx
Author: rooneg
Date: Sat Jun 25 20:35:13 2005
New Revision: 201822
URL: http://svn.apache.org/viewcvs?rev=201822&view=rev
Log:
Add functions for creating keyword and unindexed fields, and make use
of them in the 'lcn index' command.
* include/lcn_field.h
(lcn_field_keyword,
lcn_field_unindexed): new declarations.
* src/cmdline/main.c
(index_entry): index directories, add keyword fields to both directories
and files to indicate their type, use unindexed fields to store paths.
* src/document/field.cxx
(field_keyword_internal,
lcn_field_keyword,
field_unindexed_internal,
lcn_field_uninexed): new functions.
Modified:
incubator/lucene4c/trunk/include/lcn_field.h
incubator/lucene4c/trunk/src/cmdline/main.c
incubator/lucene4c/trunk/src/document/field.cxx
Modified: incubator/lucene4c/trunk/include/lcn_field.h
URL: http://svn.apache.org/viewcvs/incubator/lucene4c/trunk/include/lcn_field.h?rev=201822&r1=201821&r2=201822&view=diff
==============================================================================
--- incubator/lucene4c/trunk/include/lcn_field.h (original)
+++ incubator/lucene4c/trunk/include/lcn_field.h Sat Jun 25 20:35:13 2005
@@ -38,6 +38,20 @@
const char *value,
apr_pool_t *pool);
+/** Create a keyword field. */
+lcn_error_t *
+lcn_field_keyword (lcn_field_t **f,
+ const char *name,
+ const char *value,
+ apr_pool_t *pool);
+
+/** Create an unindexed field. */
+lcn_error_t *
+lcn_field_unindexed (lcn_field_t **f,
+ const char *name,
+ const char *value,
+ apr_pool_t *pool);
+
/** Return the name of field @a f in @a name, allocated in @a pool. */
lcn_error_t *
lcn_field_name (char **name, const lcn_field_t *f, apr_pool_t *pool);
Modified: incubator/lucene4c/trunk/src/cmdline/main.c
URL: http://svn.apache.org/viewcvs/incubator/lucene4c/trunk/src/cmdline/main.c?rev=201822&r1=201821&r2=201822&view=diff
==============================================================================
--- incubator/lucene4c/trunk/src/cmdline/main.c (original)
+++ incubator/lucene4c/trunk/src/cmdline/main.c Sat Jun 25 20:35:13 2005
@@ -122,6 +122,8 @@
int *nindexed,
apr_pool_t *pool)
{
+ lcn_document_t *doc;
+ lcn_field_t *field;
apr_finfo_t finfo;
apr_status_t rv;
@@ -129,11 +131,23 @@
if (rv)
return lcn_error_create (LCN_ERR_IO_EXCEPTION, "couldn't stat file");
+ LCN_ERR (lcn_document_create (&doc, pool));
+
+ printf ("indexing '%s'\n", entry);
+
+ LCN_ERR (lcn_field_unindexed (&field, "path", entry, pool));
+
+ LCN_ERR (lcn_document_add_field (doc, field));
+
if (finfo.filetype == APR_DIR)
{
apr_pool_t *subpool;
apr_dir_t *dir;
+ LCN_ERR (lcn_field_keyword (&field, "type", "directory", pool));
+
+ LCN_ERR (lcn_document_add_field (doc, field));
+
rv = apr_dir_open (&dir, entry, pool);
if (rv)
return lcn_error_create (LCN_ERR_IO_EXCEPTION, "couldn't open dir");
@@ -165,27 +179,19 @@
}
else
{
- lcn_document_t *doc;
- lcn_field_t *field;
-
- LCN_ERR (lcn_document_create (&doc, pool));
-
- printf ("indexing '%s'\n", entry);
-
- /* XXX should be a keyword or something, so it isn't tokenized */
- LCN_ERR (lcn_field_text (&field, "path", entry, pool));
+ LCN_ERR (lcn_field_keyword (&field, "type", "file", pool));
LCN_ERR (lcn_document_add_field (doc, field));
/* XXX should obviously index contents... */
+ }
- LCN_ERR (lcn_index_writer_add_document (writer, doc, pool));
+ LCN_ERR (lcn_index_writer_add_document (writer, doc, pool));
- if (++*nindexed % 10 == 0)
- {
- printf ("optimizing index\n");
- LCN_ERR (lcn_index_writer_optimize (writer));
- }
+ if (++*nindexed % 10 == 0)
+ {
+ printf ("optimizing index\n");
+ LCN_ERR (lcn_index_writer_optimize (writer));
}
return LCN_NO_ERROR;
Modified: incubator/lucene4c/trunk/src/document/field.cxx
URL: http://svn.apache.org/viewcvs/incubator/lucene4c/trunk/src/document/field.cxx?rev=201822&r1=201821&r2=201822&view=diff
==============================================================================
--- incubator/lucene4c/trunk/src/document/field.cxx (original)
+++ incubator/lucene4c/trunk/src/document/field.cxx Sat Jun 25 20:35:13 2005
@@ -65,6 +65,66 @@
return lcn__swallow_exception (field_text_internal, &ftb);
}
+static void
+field_keyword_internal (void *b)
+{
+ field_text_baton *ftb = static_cast<field_text_baton *>(b);
+
+ *ftb->f = static_cast<lcn_field_t *>(apr_palloc (ftb->pool,
+ sizeof (lcn_field_t)));
+
+ jstring name = JvNewStringUTF (ftb->name);
+ jstring value = JvNewStringUTF (ftb->value);
+
+ (*ftb->f)->impl = Field::Keyword (name, value);
+}
+
+lcn_error_t *
+lcn_field_keyword (lcn_field_t **f,
+ const char *name,
+ const char *value,
+ apr_pool_t *pool)
+{
+ field_text_baton ftb;
+
+ ftb.f = f;
+ ftb.name = name;
+ ftb.value = value;
+ ftb.pool = pool;
+
+ return lcn__swallow_exception (field_keyword_internal, &ftb);
+}
+
+static void
+field_unindexed_internal (void *b)
+{
+ field_text_baton *ftb = static_cast<field_text_baton *>(b);
+
+ *ftb->f = static_cast<lcn_field_t *>(apr_palloc (ftb->pool,
+ sizeof (lcn_field_t)));
+
+ jstring name = JvNewStringUTF (ftb->name);
+ jstring value = JvNewStringUTF (ftb->value);
+
+ (*ftb->f)->impl = Field::UnIndexed (name, value);
+}
+
+lcn_error_t *
+lcn_field_unindexed (lcn_field_t **f,
+ const char *name,
+ const char *value,
+ apr_pool_t *pool)
+{
+ field_text_baton ftb;
+
+ ftb.f = f;
+ ftb.name = name;
+ ftb.value = value;
+ ftb.pool = pool;
+
+ return lcn__swallow_exception (field_unindexed_internal, &ftb);
+}
+
struct field_name_baton {
char **name;
const lcn_field_t *f;
@@ -132,4 +192,5 @@
return lcn__swallow_exception (field_content_internal, &fcb);
}
+
} // extern "C"