[KinoSearch] KinoSearch 0.31 released

Marvin Humphrey marvin at rectangular.com
Wed Oct 27 21:22:47 PDT 2010


Greets,

I'm pleased to announce that KinoSearch 0.31 is available from rectangular.com
and has been uploaded to CPAN.

  Overview of changes since release 0.165:

    KinoSearch 0.31 is a major upgrade, adding numerous features and
    improvements:

    * Greatly increased speed.
    * Near-real-time indexing.
    * Sorting by field value.
    * Range queries.
    * Robust Unicode support.
    * Improved subclassing support.
    * "Lightweight Searchers", which open quickly and have low process RAM
      requirements.
    * Expanded public API (increasing from 33 to 78 public classes)
    * Refined and improved schema, query-building, and document APIs.
    * Expanded tutorial and cookbook documentation.

    Release 0.31 is not backwards compatible with the 0.1x branch in terms of
    either file format or API.  Users who require the functionality of 0.1x
    should consider the stable fork "KinoSearch1".

  Major internal changes:

    * Almost all core module code ported to C.
    * Greatly increased integration with the OS file system cache.
    * Schema data serialized and stored with index.
    * New internal object model ("Clownfish").

  New classes:

    * KinoSearch::Document::HitDoc
    * KinoSearch::Index::BackgroundMerger
    * KinoSearch::Index::DataReader
    * KinoSearch::Index::DataWriter
    * KinoSearch::Index::DeletionsWriter
    * KinoSearch::Index::DocReader
    * KinoSearch::Index::IndexManager
    * KinoSearch::Index::IndexReader
    * KinoSearch::Index::Lexicon
    * KinoSearch::Index::LexiconReader
    * KinoSearch::Index::PolyReader
    * KinoSearch::Index::PostingList
    * KinoSearch::Index::PostingListReader
    * KinoSearch::Index::Segment
    * KinoSearch::Index::SegReader
    * KinoSearch::Index::SegWriter
    * KinoSearch::Index::Similarity
    * KinoSearch::Index::Snapshot
    * KinoSearch::Object::BitVector
    * KinoSearch::Object::Err
    * KinoSearch::Object::Obj
    * KinoSearch::Plan::Architecture
    * KinoSearch::Plan::BlobType
    * KinoSearch::Plan::FieldType
    * KinoSearch::Plan::FullTextType
    * KinoSearch::Plan::Schema
    * KinoSearch::Plan::StringType
    * KinoSearch::Search::ANDQuery
    * KinoSearch::Search::Collector
    * KinoSearch::Search::Collector::BitCollector
    * KinoSearch::Search::Compiler
    * KinoSearch::Search::LeafQuery
    * KinoSearch::Search::MatchAllQuery
    * KinoSearch::Search::Matcher
    * KinoSearch::Search::NoMatchQuery
    * KinoSearch::Search::NOTQuery
    * KinoSearch::Search::ORQuery
    * KinoSearch::Search::PolyQuery
    * KinoSearch::Search::QueryParser
    * KinoSearch::Search::RangeQuery
    * KinoSearch::Search::RequiredOptionalQuery
    * KinoSearch::Search::Searcher
    * KinoSearch::Search::SortRule
    * KinoSearch::Search::SortSpec
    * KinoSearch::Search::Span
    * KinoSearch::Store::Lock
    * KinoSearch::Store::LockErr
    * KinoSearch::Store::LockFactory
    * KSx::Index::ByteBufDocReader
    * KSx::Index::ByteBufDocWriter
    * KSx::Index::LongFieldSim
    * KSx::Index::ZlibDocReader
    * KSx::Index::ZlibDocWriter
    * KSx::Search::MockScorer
    * KSx::Search::ProximityQuery
    * KSx::Simple

  New documentation:

    * KinoSearch::Docs::Cookbook
    * KinoSearch::Docs::Cookbook::CustomQuery
    * KinoSearch::Docs::Cookbook::CustomQueryParser
    * KinoSearch::Docs::Cookbook::FastUpdates
    * KinoSearch::Docs::DocIDs
    * KinoSearch::Docs::FileLocking
    * KinoSearch::Docs::IRTheory
    * KinoSearch::Docs::Tutorial::Analysis
    * KinoSearch::Docs::Tutorial::BeyondSimple
    * KinoSearch::Docs::Tutorial::FieldType
    * KinoSearch::Docs::Tutorial::Highlighter
    * KinoSearch::Docs::Tutorial::QueryObjects
    * KinoSearch::Docs::Tutorial::Simple

  Moved classes:

    * KinoSearch::InvIndexer               -> KinoSearch::Index::Indexer
    * KinoSearch::Searcher                 -> KinoSearch::Search::IndexSearcher
    * KinoSearch::Analysis::LCNormalizer   -> KinoSearch::Analysis::CaseFolder
    * KinoSearch::QueryParser::QueryParser -> KinoSearch::Search::QueryParser
    * KinoSearch::Search::MultiSearcher    -> KinoSearch::Search::PolySearcher
    * KinoSearch::Search::QueryFilter      -> KSx::Search::Filter
    * KinoSearch::Search::SearchClient     -> KSx::Remote::SearchClient
    * KinoSearch::Search::SearchServer     -> KSx::Remote::SearchServer
    * KinoSearch::Store::InvIndex          -> KinoSearch::Store::Folder
    * KinoSearch::Store::FSInvIndex        -> KinoSearch::Store::FSFolder
    * KinoSearch::Store::RAMInvIndex       -> KinoSearch::Store::RAMFolder
    
  Removed/redacted classes:
  
    * KinoSearch::Analysis::Token - Redacted.
    * KinoSearch::Analysis::TokenBatch - Redacted.
    * KinoSearch::Document::Field - Removed.
    * KinoSearch::Highlight::Encoder - See Highlighter.
    * KinoSearch::Highlight::Formatter - See Highlighter.
    * KinoSearch::Highlight::SimpleHTMLEncoder - See Highlighter.
    * KinoSearch::Highlight::SimpleHTMLFormatter - See Highlighter.
    * KinoSearch::Index::Term - Removed.
    * KinoSearch::Search::BooleanQuery - See ANDQuery, ORQuery,
      NOTQuery, RequiredOptionalQuery, and PolyQuery.
    * KinoSearch::Search::Hit - See HitDoc.
 
  API Changes:

    * KinoSearch::Index::Indexer (formerly KinoSearch::InvIndexer)
      o Modified:
        * new() - Args changed.  
          o Replaced: "invindex" -> "index".
          o Added: "schema", "truncate", "manager".
          o Removed: "analyzer".
      o Removed:
        * spec_field() - See Schema.
        * new_doc() - See Doc->new.
        * finish() - see commit(), prepare_commit(), optimize().
        * delete_docs_by_term() - see delete_by_term()
        * add_invindexes() - see add_index()
      o Added:
        * commit()
        * prepare_commit()
        * optimize()
        * add_index()
        * delete_by_term()
        * delete_by_query()

    * KinoSearch::Search::IndexSearcher (formerly KinoSearch::Searcher)
      o New behaviors:
        * Searcher objects are now "lightweight" (or rather, the IndexReader
          objects they wrap are lightweight) -- they cache index data via the
          OS file system cache rather than in process RAM, allowing them to
          open quickly and share memory across multiple objects.
      o Modified:
        * new() - Args changed.
          o Removed: "analyzer", "invindex".
          o Added: "index".
      o Renamed:
        * search() -> hits()
      o Added:
        * collect()
        * doc_max()
        * doc_freq()
        * get_schema()
        * get_reader()

    * KinoSearch::Analysis::CaseFolder (formerly LCNormalizer)
      o Modified:
        * new() - no-op parameter "language" removed.

    * KinoSearch::Analysis::Stopalizer
      o Modified:
        * new() - The values of a supplied "stoplist" hash are now ignored.

    * KinoSearch::Analysis::Tokenizer
      o Modified:
        * new() - parameter "token_re" replaced by "pattern".

    * KinoSearch::Document::Doc
      o New behavior: field values accessible via hashref overloading.
      o Removed:
        * set_value()
        * get_value()
      o Added:
        * new()
        * get_fields()
        * get_doc_id()

    * KinoSearch::Highlight::Highlighter
      o Modified:
        * new() - Args changed.  
          o Added: "query", "searcher".
          o Removed: "formatter", "encoder", "pre_tag", "post_tag".
          o Replaced: "excerpt_field" -> "field".
      o Added:
        * set_pre_tag()
        * get_pre_tag()
        * set_post_tag()
        * get_post_tag()
        * get_searcher()
        * get_query()
        * get_compiler()
        * get_excerpt_length()
        * get_field()

    * KinoSearch::Search::QueryParser 
      (formerly KinoSearch::QueryParser::QueryParser)
      o Changed behaviors: 
        * Parsing of 'fieldname:value' constructs disabled by
          default, enabled via set_heed_colons().
      o Modified:
        * new() - Args changed.  
          o Added: "schema".
          o Removed: "default_field".
      o Added:
        * parse()
        * tree()
        * expand()
        * expand_leaf()
        * prune()
        * set_heed_colons()
        * make_term_query()
        * make_phrase_query()
        * make_and_query()
        * make_or_query()
        * make_not_query()
        * make_req_opt_query()

    * KinoSearch::Search::PolySearcher 
      (formerly KinoSearch::Search::MultiSearcher)
      o Modified:
        * new() - Args changed.  
          o Added: "schema".
          o Removed: "analyzer".
          o Renamed: "searchables" -> "searchers"
      o Added:
        * doc_max()
        * doc_freq()
        * fetch_doc()
        * get_schema()
      o Renamed: search() -> hits()

    * KinoSearch::Search::Query 
      o Added:
        * make_compiler()

    * KinoSearch::Search::PhraseQuery 
      o Modified:
        * new() - Args changed.  
          o Added: "terms", "field".
      o Added:
        * get_field()
        * get_terms()
      o Removed:
        * add_term()

    * KinoSearch::Search::TermQuery
      o Modified:
        * new() - now accepts "field" and a text "term" as arguments, rather
          than a "term" which is Term object combining field and term text.

    * KinoSearch::Store::FSFolder
      o Modified:
        * new() - Args changed.
          o Removed: "create".

    * KSx::Remote::SearchClient (formerly KinoSearch::Search::SearchClient)
      o Modified:
        * new() - Args changed.  
          o Removed: "analyzer".

    * KSx::Remote::SearchServer (formerly KinoSearch::Search::SearchServer)
      o Modified:
        * new() - Args changed.  
          o Replaced: "searchable" -> "searcher".


Enjoy,

Marvin Humphrey




More information about the kinosearch mailing list