[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kinosearch-commits
Subject:    [Kinosearch-commits] r2500 - in trunk/perl: . t
From:       marvin () rectangular ! com (marvin () rectangular ! com)
Date:       2007-08-31 10:07:36
Message-ID: mailman.10.1188580056.555.kinosearch-commits () rectangular ! com
[Download RAW message or body]

Author: root
Date: 2007-08-31 10:07:34 -0700 (Fri, 31 Aug 2007)
New Revision: 2500

Added:
   trunk/perl/t/218-del_merging.t
Modified:
   trunk/perl/MANIFEST
Log:
Add failing test exposing problem when segments containing deletions are
merged.


Modified: trunk/perl/MANIFEST
===================================================================
--- trunk/perl/MANIFEST	2007-08-20 02:41:33 UTC (rev 2499)
+++ trunk/perl/MANIFEST	2007-08-31 17:07:34 UTC (rev 2500)
@@ -255,6 +255,7 @@
 t/215-term_vectors.t
 t/216-schema.t
 t/217-multi_lexicon.t
+t/218-del_merging.t
 t/302-many_fields.t
 t/303-highlighter.t
 t/304-verify_utf8.t

Added: trunk/perl/t/218-del_merging.t
===================================================================
--- trunk/perl/t/218-del_merging.t	                        (rev 0)
+++ trunk/perl/t/218-del_merging.t	2007-08-31 17:07:34 UTC (rev 2500)
@@ -0,0 +1,49 @@
+use strict;
+use warnings;
+
+package DelSchema;
+use base 'KinoSearch::Schema';
+use KinoSearch::Analysis::Tokenizer;
+
+our %fields = (
+    zap => 'KinoSearch::Schema::FieldSpec',
+    # Flags, these are stored in the path by courier imap
+    foo => 'KinoSearch::Schema::FieldSpec',
+);
+
+sub analyzer { KinoSearch::Analysis::Tokenizer->new }
+
+package main;
+
+use KinoSearch::InvIndexer;
+use KinoSearch::Searcher;
+use KinoSearch::Store::RAMFolder;
+
+use Test::More tests => 4;
+
+my $folder   = KinoSearch::Store::RAMFolder->new;
+my $invindex = KinoSearch::InvIndex->clobber(
+    folder => $folder,
+    schema => DelSchema->new,
+);
+
+my $invindexer = KinoSearch::InvIndexer->new( invindex => $invindex );
+$invindexer->add_doc( { foo => 'a', zap => $_ } ) for qw( x y z );
+$invindexer->finish;
+
+is( search_doc('a'), 3, "match all docs prior to deletion" );
+is( search_doc('y'), 1, "match doc to be deleted" );
+
+$invindexer = KinoSearch::InvIndexer->new( invindex => $invindex );
+$invindexer->delete_by_term( zap => 'y' );
+$invindexer->finish( optimize => 1 );
+
+is( search_doc('y'), 0, "deletion successful" );
+is( search_doc('a'), 2, "match all docs after deletion" );
+
+sub search_doc {
+    my $query_string = shift;
+    my $searcher     = KinoSearch::Searcher->new( invindex => $invindex );
+    my $hits         = $searcher->search( query => $query_string );
+    return $hits->total_hits;
+}


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic