From: <ust...@us...> - 2008-09-27 11:02:49
|
Revision: 2904 http://clucene.svn.sourceforge.net/clucene/?rev=2904&view=rev Author: ustramooner Date: 2008-09-27 11:02:44 +0000 (Sat, 27 Sep 2008) Log Message: ----------- added term unordered(hash based) compare. we might use it in document writer to speed things up a bit... Modified Paths: -------------- branches/lucene2_3_2/src/core/CLucene/index/Term.cpp branches/lucene2_3_2/src/core/CLucene/index/Term.h branches/lucene2_3_2/src/core/CLucene/index/_Term.h Modified: branches/lucene2_3_2/src/core/CLucene/index/Term.cpp =================================================================== --- branches/lucene2_3_2/src/core/CLucene/index/Term.cpp 2008-09-27 10:44:04 UTC (rev 2903) +++ branches/lucene2_3_2/src/core/CLucene/index/Term.cpp 2008-09-27 11:02:44 UTC (rev 2904) @@ -224,6 +224,18 @@ return _tcscmp(_field,other->_field); } +int32_t Term::hashedCompareTo(Term* other) { + size_t hc1 = this->hashCode(); + size_t hc2 = other->hashCode(); + + if ( hc1 == hc2 ) + return compareTo(other); + else if ( hc1 > hc2 ) + return -1; + else + return 1; +} + TCHAR* Term::toString() const{ //Func - Forms the contents of Field and term in some kind of tuple notation // <field:text> Modified: branches/lucene2_3_2/src/core/CLucene/index/Term.h =================================================================== --- branches/lucene2_3_2/src/core/CLucene/index/Term.h 2008-09-27 10:44:04 UTC (rev 2903) +++ branches/lucene2_3_2/src/core/CLucene/index/Term.h 2008-09-27 11:02:44 UTC (rev 2904) @@ -94,6 +94,15 @@ The ordering of terms is first by field, then by text.*/ int32_t compareTo(const Term* other) const; + + /** Compares two terms, returning a negative integer if this + term belongs before the argument, zero if this term is equal to the + argument, and a positive integer if this term belongs after the argument. + + The ordering of terms is purely on the hashCode, so is not a logical ordering, but is repeatable. + Note: can't be const because call the to hashCode is not const + */ + int32_t hashedCompareTo(Term* other); bool equals(const Term* other) const; Modified: branches/lucene2_3_2/src/core/CLucene/index/_Term.h =================================================================== --- branches/lucene2_3_2/src/core/CLucene/index/_Term.h 2008-09-27 10:44:04 UTC (rev 2903) +++ branches/lucene2_3_2/src/core/CLucene/index/_Term.h 2008-09-27 11:02:44 UTC (rev 2904) @@ -33,5 +33,16 @@ } }; +class Term_UnorderedCompare:LUCENE_BASE, public CL_NS(util)::Compare::_base //<Term*> +{ +public: + bool operator()( Term* t1, Term* t2 ) const{ + return ( t1->hashedCompareTo(t2) < 0 ); + } + size_t operator()( Term* t ) const{ + return t->hashCode(); + } +}; + CL_NS_END #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |