--- clucene-0.8.13/examples/utf8_test/DeleteFiles.cpp 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/DeleteFiles.cpp 2005-03-18 12:34:24.000000000 -0700 @@ -0,0 +1,48 @@ +#include "stdafx.h" +#ifndef _lucene_demo_DeleteFiles_ +#define _lucene_demo_DeleteFiles_ + +#include "CLucene.h" +#include + +using namespace std; + using namespace lucene::index; + using namespace lucene::util; + using namespace lucene::store; + using namespace lucene::document; +namespace lucene{ namespace demo { + static void DeleteFiles(const char_t* dir) { + IndexReader& reader = IndexReader::open(dir); + + // Term term = new Term("path", "pizza"); + // int_t deleted = reader.delete(term); + + // System.out.println("deleted " + deleted + + // " documents containing " + term); + + int_t count = 0; + for (int_t i = 0; i < reader.MaxDoc(); i++){ + reader.Delete (i); + count ++; + } + _cout << _T("Deleted ") << count << _T(" files\n"); + reader.close(); + delete &reader; + + //OPTIMIZE + if ( IndexReader::indexExists(dir) ){ + lucene::analysis::SimpleAnalyzer& an = *new lucene::analysis::SimpleAnalyzer(); + Directory* d = d = &FSDirectory::getDirectory( dir,false ); + if ( IndexReader::isLocked(*d) ){ + _cout << _T("Index was locked... unlocking it.")<optimize(); + delete writer; + } + + } +}} +#endif --- clucene-0.8.13/examples/utf8_test/idx/EMPTY 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/idx/EMPTY 2005-03-18 12:29:38.000000000 -0700 @@ -0,0 +1 @@ + --- clucene-0.8.13/examples/utf8_test/IndexFiles.cpp 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/IndexFiles.cpp 2005-03-18 12:34:24.000000000 -0700 @@ -0,0 +1,105 @@ +#include "stdafx.h" +#ifndef _lucene_demo_IndexFiles_ +#define _lucene_demo_IndexFiles_ + +#include "CLucene.h" +#include "CLucene/util/Reader.h" +#include + +using namespace std; +namespace lucene{ namespace demo { + using namespace lucene::index; + using namespace lucene::analysis; + using namespace lucene::util; + using namespace lucene::store; + using namespace lucene::document; + + static Document& FileDocument(const char_t* f){ + // make a new, empty document + Document& doc = *new Document(); + + // Add the path of the file as a field named "path". Use a Tex t field, so + // that the index stores the path, and so that the path is searchable + doc.add( Field::Text(_T("path"), f ) ); + + // Add the last modified date of the file a field named "modified". Use a + // Keyword field, so that it's searchable, but so that no attempt is made + // to tokenize the field into words. + //doc.add(Field.Keyword("modified", + // DateField.timeToString(f.lastModified()))); + + // Add the contents of the file a field named "contents". Use a Text + // field, specifying a Reader, so that the text of the file is tokenized. + FileReader* reader = new FileReader(f); + doc.add( Field::Text(_T("contents"),reader) ); + + // return the document + return doc; + } + + static void indexDocs(IndexWriter* writer, char_t* directory) { + DIR* dir = opendir(directory); + struct dirent* fl; + + struct Struct_Stat buf; + + char_t path[CL_MAX_DIR]; + stringCopy(path,directory); + stringCat(path,PATH_DELIMITER); + char_t* pathP = path + stringLength(path); + + fl = readdir(dir); + while ( fl != NULL ){ + if ( (stringCompare(fl->d_name, _T("."))) && (stringCompare(fl->d_name, _T(".."))) ) { + pathP[0]=0; + stringCat(pathP,fl->d_name); + int_t ret = Cmd_Stat(path,&buf); + if ( buf.st_mode & S_IFDIR ) { + indexDocs(writer, path ); + }else{ + printFormatted( _T("adding: %s\n"), fl->d_name ); + Document& doc = FileDocument( path ); + writer->addDocument( doc ); + delete &doc; + } + } + fl = readdir(dir); + + } + closedir(dir); + } + static void IndexFiles(char_t* path, char_t* target, const bool clearIndex){ + long_t str = lucene::util::Misc::currentTimeMillis(); + IndexWriter* writer = NULL; + Directory* d = NULL; + //lucene::analysis::SimpleAnalyzer& an = *new lucene::analysis::SimpleAnalyzer(); + lucene::analysis::standard::StandardAnalyzer& an = *new lucene::analysis::standard::StandardAnalyzer(); + + if ( !clearIndex && IndexReader::indexExists(target) ){ + d = &FSDirectory::getDirectory( target,false ); + if ( IndexReader::isLocked(*d) ){ + _cout << _T("Index was locked... unlocking it.")<infoStream = &cout; //TODO: infoStream - unicode + indexDocs(writer, path); + + + + writer->optimize(); + writer->close(); + delete writer; + delete &an; + + _cout << _T("Indexing took: ") << (lucene::util::Misc::currentTimeMillis() - str) << _T("ms.") << endl << endl; + } + + +}} +#endif --- clucene-0.8.13/examples/utf8_test/Main.cpp 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/Main.cpp 2005-03-18 12:34:24.000000000 -0700 @@ -0,0 +1,68 @@ +#include "stdafx.h" +//#define TR_LEAKS + +#ifdef TR_LEAKS +#ifdef COMPILER_MSVC +#ifdef _DEBUG + int _lucene_BlockStop; + #define CRTDBG_MAP_ALLOC + #include + #include +#endif +#endif +#endif + +#include "SearchFiles.cpp" +#include "IndexFiles.cpp" +#include "DeleteFiles.cpp" +#include "Statistics.cpp" +#include + + +using namespace std; +int main( int_t argc, char** argv ){ + //Dumper Debug + #ifdef TR_LEAKS + #ifdef COMPILER_MSVC + #ifdef _DEBUG + _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );//| _CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_CHECK_CRT_DF ); + #endif + #endif + #endif + + long_t str = lucene::util::Misc::currentTimeMillis(); + try{ + + char_t ndx[250]; + + strcpy(ndx, UTF8_TEST_IDX); + + char_t files[250]; + + strcpy(files, UTF8_TEST_FILES); + + + lucene::demo::IndexFiles(files,ndx,true); + lucene::demo::getStats(ndx); + lucene::demo::SearchFiles(ndx); + lucene::demo::DeleteFiles(ndx); + + }catch (THROW_TYPE e){ + cout << "Exception: " << e.what() << endl; + throw; + }catch ( char_t* err ){ + _cout << _T("Error: ") << err; + throw; + } + catch ( ... ){ + cout << "UNKNOWN ERROR" << endl; + throw; + } + + + //Debuggin techniques: + //In the Watch window, type the following expression in the Name column: + //_crtBreakAlloc + + _cout << endl << endl << _T("Time taken: ") << (lucene::util::Misc::currentTimeMillis() - str) << _T("ms.") << endl << endl; +} --- clucene-0.8.13/examples/utf8_test/Makefile.am 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/Makefile.am 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,13 @@ +MAINTAINERCLEANFILES = Makefile.in + +INCLUDES = -I$(top_srcdir)/src + +DEFS += -DHAVE_CONFIG_H +DEFS += -DUTF8_TEST_IDX=\"$(top_srcdir)/examples/utf8_test/idx/\" +DEFS += -DUTF8_TEST_FILES=\"$(top_srcdir)/examples/utf8_test/utf8text/\" + +bin_PROGRAMS = cl_utf8_test + +cl_utf8_test_SOURCES = Main.cpp + +cl_utf8_test_LDADD = $(top_builddir)/src/libclucene.la --- clucene-0.8.13/examples/utf8_test/SearchFiles.cpp 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/SearchFiles.cpp 2005-03-18 12:34:24.000000000 -0700 @@ -0,0 +1,296 @@ +#include "stdafx.h" +#ifndef _lucene_demo_SearchFiles_ +#define _lucene_demo_SearchFiles_ + +#include "CLucene.h" +#include + +using namespace std; +namespace lucene{ namespace demo { +// using namespace lucene::index; + using namespace lucene::analysis; + using namespace lucene::util; + using namespace lucene::queryParser; + using namespace lucene::document; + using namespace lucene::search; + + + static void SearchFiles(const char_t* index){ + //Searcher searcher(index); + standard::StandardAnalyzer analyzer; + char_t line[80]; + const char_t* buf; + int count = 0; + int found_it = 0; + + while (count < 12) { + + //UTF8 Character strings for search test + + if(count == 0) + strcpy(line, "google"); //English + else if(count == 1) + strcpy(line, "k\xc3\xb6nnen"); //können - german + else if (count == 2) + strcpy(line, "r\xc3\xa9put\xc3\xa9"); //réputé - french + else if (count == 3) + strcpy(line, "\xe5\x95\xa4\xe9\x85\x92"); //啤酒 - chinese + else if (count == 4) + strcpy(line, "\xe8\xa6\x8b\xe5\xad\xa6"); //見学 - japanese + else if (count == 5) + strcpy(line, "\xea\xb8\x88"); //금 - korean + else if (count == 6) + strcpy(line, "\xd0\x92\xd0\xb5\xd0\xbb\xd0\xb8\xd0\xba\xd0\xb8\xd0\xb5\x20"); + //Великие - russian + else if (count == 7) + strcpy(line,"\xcf\x83\xcf\x84\xce\xb5\xce\xaf\xce\xbb\xcf\x84\xce\xb5");//στείλτε - greek + else if (count == 8) + strcpy(line,"Bud\xc4\x9bjovick\xc3\xbd");//Budějovický - czech + else if (count == 9) + strcpy(line,"sp\xc3\xb3\xc5\x82ka");//spółka - polish + else if (count == 10) + strcpy(line,"\xd7\x91\xd7\x90\xd7\xa8\xd7\xa6\xd7\x95\xd7\xaa");//בארצות - hebrew + else if (count == 11) + strcpy(line,"\xef\xbb\x9e\xef\xbb\xb4\xef\xbb\xa4\xef\xbb\xb3\xef\xba\xad");//ﻞﻴﻤﻳﺭ - arabic + + + if ( stringLength(line) == 0 ) + break; + + Query& q = QueryParser::Parse(line,_T("contents"),analyzer); + + buf = q.toString(_T("contents")); + //_cout << _T("Searching for: ") << buf << endl << endl; + delete[] buf; + + IndexReader& r = IndexReader::open(index); + IndexSearcher s(r); + + long_t str = lucene::util::Misc::currentTimeMillis(); + Hits& h = s.search(q); + long_t srch = lucene::util::Misc::currentTimeMillis() - str; + + for ( int_t i=0;i 1)) + { + _cout << "There is some problem with english UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on english_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on english query" << endl; + } + else + _cout << "english is OK" << endl; + } + + if(count == 1) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with german UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on german_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on german query" << endl; + } + else + _cout << "german is OK" << endl; + } + + if(count == 2) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with french UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on french_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on french query" << endl; + } + else + _cout << "french is OK" << endl; + } + + if(count == 3) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with chinese UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on chinese_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on chinese query" << endl; + } + else + _cout << "chinese is OK" << endl; + } + + if(count == 4) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with japanese UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on japanese_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on japanese query" << endl; + } + else + _cout << "japanese is OK" << endl; + } + + if(count == 5) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with korean UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on korean_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on korean query" << endl; + } + else + _cout << "korean is OK" << endl; + } + + if(count == 6) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with russian UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on russian_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on russian query" << endl; + } + else + _cout << "russian is OK" << endl; + } + + if(count == 7) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with greek UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on greek_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on greek query" << endl; + } + else + _cout << "greek is OK" << endl; + } + + if(count == 8) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with czech UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on czech_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on czech query" << endl; + } + else + _cout << "czech is OK" << endl; + } + + if(count == 9) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with polish UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on polish_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on polish query" << endl; + } + else + _cout << "polish is OK" << endl; + } + + if(count == 10) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with hebrew UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on hebrew_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on hebrew query" << endl; + } + else + _cout << "hebrew is OK" << endl; + } + + if(count == 11) + { + if((found_it == 0) || (h.Length() > 1)) + { + _cout << "There is some problem with arabic UTF8" << endl; + if(found_it == 0) + _cout << "Failed to hit on arabic_utf8.txt" << endl; + if(h.Length() > 1) + _cout << "More than one hit on arabic query" << endl; + } + else + _cout << "arabic is OK" << endl; + } + + + delete &h; + delete &q; + s.close(); + delete &r; + + count++; + found_it = 0; + + } + //delete line; + } + + +}} +#endif --- clucene-0.8.13/examples/utf8_test/Statistics.cpp 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/Statistics.cpp 2005-03-18 12:34:24.000000000 -0700 @@ -0,0 +1,39 @@ +#include "stdafx.h" +#ifndef _lucene_demo_Statistics_ +#define _lucene_demo_Statistics_ + +#include "CLucene.h" +#include "CLucene/index/Term.h" +#include "CLucene/index/SegmentTermEnum.h" +#include + +using namespace std; +namespace lucene{ namespace demo { +// using namespace lucene::index; + using namespace lucene::analysis; + using namespace lucene::util; +// using namespace lucene::store; + using namespace lucene::document; + using namespace lucene::search; + + static void getStats(const char_t* directory){ + + IndexReader& r = IndexReader::open(directory,true); + _cout << _T("Statistics for ") << directory << endl; + _cout << _T("==================================")< +//#include + +#include "CLucene/StdHeader.h" +#endif --- clucene-0.8.13/examples/utf8_test/utf8text/arabic_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/arabic_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,15 @@ +ﻞﻴﻤﻳﺭ + +استبعدت تونس كابتن منتخبها القومي خالد بدرة من المجموعة الخامسة في كأس العالم أمام ملاوي في 26 مارس/ آذار. + +وكان كابتن المنتخب القومي روجر ليمير قد استبعد بدرة، 32 عاما، والذي قاد فريق بلاده في كأس الأمم الإفريقية، من الفريق الذي يضم 23 لاعبا يوم الثلاثاء. + +وقد تم استبدال بدرة بالمهاجم علاء الدين يحيى المعار حاليا إلى فريق سان اتيان الفرنسي من فريقه الإنجليزي ساوثامبتون. + +كما سيلعب منتخب تونس المعروف باسم نسور قرطاج دون لاعب الوسط عادل شيلدي الذي أوقف عن اللعب. + +ومن المقرر أن تمثل المباراة فرصة لتونس لاستعادة اللاعب الفرنسي المولد حامد ناموتشي. + +وكان ناموتشي، 20 عاما، لاعب الوسط والذي يلعب لصالح الفريق الاسكتلندي رينجرز يلعب مع الفريق القومي في فبراير/ شباط في المباراة الودية أمام تركيا غير أن المباراة ألغيت بسبب سوء الأحوال الجوية. + +ووفقا لقوانين الاتحاد الدولي لكرة القدم (الفيفا) يسمح للاعب كرة القدم تمثيل دولة أخرى طالما يحمل جنسية مزدوجة ويطلب تغيير الجنسية قبل سن 21. --- clucene-0.8.13/examples/utf8_test/utf8text/chinese_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/chinese_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,32 @@ +啤酒 +酒 +青島啤酒與美國釀酒商合作 + + + +百威啤酒是安海斯-布希公司產品之一 +中國青島啤酒集團和世界最大釀酒商美國安海斯-布希公司(Anheuser-Busch)達成協議,組成商業策略聯盟。 + +安海斯-布希公司是生產百威啤酒(Budweiser Beer)的公司。 + +安海斯-布希和青島兩家公司將結合雙方的資源,進一步拓展中國的市場。 + +青島啤酒表示,兩家公司合資的詳情仍有待商討。 + +安海斯-布希已經持有青島4.5%的股權。 + +青島對安海斯-布希來說,吸引力非常大,主要是由於青島遍及龐大中國市場的每個角落。 + +青島一直收購小型釀酒商,提高其市場佔有率。青島目前的市場佔有率是11%。該公司表示,市場佔有率每年增長6%。 + +預料該公司在2002年1月到6月的盈利增長了50%,即超過1億元人民幣。 + +世界上30多個國家均有出售青島啤酒。 + +来 +《译员》下月将全球同步上映 妮可将有望来华 + +更新 来源:千龙新闻网 第1页/共1页 << 上一页 | 下一页 + +因为将参演王家卫的《从上海来的女人》,好莱坞著名女星妮可·基德曼在中国内地的人气激增。记者昨天了解到,由她主演的好莱坞大片《国家翻译员》作为今年内地首部全球同步引进大片,将于4月22日公映,而妮可本人将有望来华参加该片的宣传活动 + --- clucene-0.8.13/examples/utf8_test/utf8text/czech_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/czech_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,78 @@ +Budějovický +Základní +informace Naše mise + +Tradice: Při výrobě originálního budějovického ležáku Budweiser Budvar používáme tradiční postupy a stavíme na znalostech a vědomostech, které nám zanechaly generace sládků. + +Kvalita: Naše pivo vaříme z nejkvalitnějších surovin, žateckého chmelu, moravského sladu a vody z našich vlastních artéských studní. + +Jedinečnost:Díky lahodné chuti a jedinečnému složení a charakteru vyhledávají náš ležák tisíce milovníků kvalitních piv prakticky po celém světě. + +Originalita: Kdekoli na světě si koupíte Budweiser Budvar, můžete si být jisti, že byl vyroben v místě svého původu Českých Budějovicích (dříve Budweis). Proto se můžeme v rámci přístupu České republiky do Evropské unie pyšnit "ochranou podle místa původu" pro naše výrobky. + +Pivovar Budějovický Budvar + +Kvalita a věhlas budějovického piva, jehož historie sahá až do 13. století, vedly k tomu, že originální receptura i jeho jméno byly často předmětem napodobování a kopírování. + +Pivovar Budějovický Budvar je dlouhodobě jedním z nejúspěšnějších potravinářských podniků v České republice. Téměř polovina produkce je úspěšně prodávána ve více než 60 zemích celého světa. + +Novodobá historie pivovaru se datuje do roku 1967, kdy Ministerstvo zemědělství České republiky založilo národní podnik Budějovický Budvar jako přímého nástupce Českého akciového pivovaru, který vařil pivo v Českých Budějovicích již od roku 1895. Ten byl založen českými právovárečníky, kteří navázali na více než 700 let starou historii vaření piva v Českých Budějovicích (dříve Budweis). + +Budějovický Budvar vlastní cenné duševní vlastnictví v podobě více než 380 ochranných známek registrovaných ve 101 zemích světa. Mezi nejznámější patří Budweiser, Budvar, Budweiser Budvar, Bud, Budějovický Budvar a Czechvar. Toto ohromné duševní bohatství souvisí s místem svého původu, městem České Budějovice, dříve Budiwoyz či Budweis. + +Postupnou a cílevědomou expanzí na zahraniční trhy a posilováním prodejů doma dosáhl Budějovický Budvar pozice klíčového hráče na trhu piva nejen v České republice. Objem exportovaného výstavu řadí prémiový originální ležák Budweiser Budvar k jedné z nejexportovanějších pivních značek České republiky. V Budějovickém Budvaru, n. p., dnes pracuje přes 670 zaměstnanců. + +Hlavní představitelé pivovaru + +Ing. Jiří Boček – ředitel +Ing. Josef Tolar – sládek +Ing. Petr Jánský – finanční a ekonomický manager +Ing. Robert Chrt – obchodní manager +česky english deutsche Úvod Mapa stránek + +Katalog výrobků +Katalog výrobků +To nejvzácnější, co máme … + +Naše vlastní vyšlechtěná kultura kvasinek (Saccharomyces cerevisiae subsp. uvarum), která dozrává pod pečlivým dohledem sládků, otváří tu nejjemnější součást lahodné chuti našeho piva. + +K výrobě našeho piva jsou použity jen ty nejkvalitnější suroviny a každá z nich je pro jeho unikátní chuť neméně důležitá. + +Panensky čistá přírodní voda, která čekala téměř 10 000 let na vysvobození z našich 300 m hlubokých artéských studní, dotváří jeho nezaměnitelnou lahodnou chuť, kterou oceníte pokaždé, když se napijete. + +Naše pivo vyniká dokonalou harmonickou chutí. Její základ tvoří kombinace těch nejkvalitnějších domácích surovin a dlouholetá +zkušenost generací sládků. + +K výrobě jsou použity jen ty nejmodernější technologie, zároveň se však úzkostlivě dbá na dodržování tradičních výrobních postupů, aby byla zachována stále stejná, vysoká kvalita. Velký důraz je kladen na zrání („ležení“) piva, které u prémiového originálního ležáku dosahuje minimálně 90 dní, u speciálního piva Bud Super Strong až 200 dní. + +Samičí hlávky vysoce kvalitního žateckého chmele (Humulus lupulus) dělají z našeho piva opravdovou vzácnost. Dodávají mu totiž jeho nenapodobitelný, vysoce ceněný, jemný chmelový charakter. + +Zrnka unikátní odrůdy moravského ječmene (Hordeum vulgaris), která každoročně přednostně vybíráme z prvotřídních sklizní, dodávají našemu pivu jeho nenapodobitelnou zlatavou barvu. + + + +Seznam produktů + + + +Budweiser Budvar prémiový ležák + + +Budweiser Budvar prémiový ležák + + +Budějovický Budvar světlé výčepní pivo + + +Bud Super Strong + + +Budweiser Budvar Free nealkoholické pivo + + +Budweiser Budvar Free nealkoholické pivo + + +Budweiser Budvar tmavý ležák + +© 2003 Všechna práva vyhrazena, Budějovický Budvar n.p. Maintenance by Český Web, a.s. --- clucene-0.8.13/examples/utf8_test/utf8text/english_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/english_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,70 @@ +MSN vs. Google and Yahoo, Round 3 +Published: March 15, 2005, 7:41 PM PST +By Stefanie Olsen +Staff Writer, CNET News.com + +TrackBack +Print +E-mail +TalkBack + +Microsoft CEO Steve Ballmer is expected to show off a new paid-search service +on Wednesday that will eventually go toe-to-toe with rival Google and supplant +partner Yahoo's advertising. + +As previously reported, Microsoft's Internet group is developing a +pay-per-click ad-bidding system that pairs search results with sponsored text +messages from advertisers. Yahoo's Overture Services currently supplies MSN +with sponsored search links, which complement MSN-sold "featured sites." + +But the new MSN service, called AdCenter and set to roll out in Singapore and +France in the coming months, will bump Overture ads in the long run and let MSN +own a major source of its advertising revenue. (Microsoft splits fees collected +from marketers with Overture.) + +News.context + +What's new: +MSN is set to show off its version of a system for selling text ads linked to +search queries and results, a direct challenge to market leaders Google and +Yahoo. + +Bottom line: + +Microsoft's Internet group is hungry for a bigger piece of the +multibillion-dollar ad business related to search, and the new service will +eventually allow it to jettison a deal with Yahoo's Overture Services. That +agreement provides ad revenue but requires MSN to split the money with Yahoo. + +More stories on this topic +Microsoft does not have a specific date for a U.S. launch, but it envisions +operating the ad network globally, said Adam Sohn, an MSN spokesman. + +"Call this the third leg of the search stool," said Sohn. "First, we introduced +algorithmic search, then desktop (search), which is still in beta, and now the +advertising platform." + +With the product, Microsoft will move into the mother lode of a +multibillion-dollar ad business dominated by Google and Yahoo. Search-engine +marketing is expected to be worth as much as $5 billion this year, and nearly +$9 billion annually within four years, according to Jupiter Research. +Microsoft's piece of the pie is smaller than the shares enjoyed by market +leaders Yahoo and Google, and the software giant is hungry for more. + +Google fields 35.1 percent of the searches online, followed by Yahoo at 31.8 +percent and MSN at 16 percent, according to ComScore QSearch. If the number of +searches translates to the percentage of the ad market, MSN generates roughly +$1.6 billion annually from search, minus the portion shared with Overture. + +MSN's product is far from fully baked, according to Sohn, but it could +eventually crowd rivals, search engine watchers say. Given that there is a +finite number of searches conducted on the Internet, and hence a limited number +of opportunities to display search-related ads, MSN will grab ad dollars away +from Yahoo and Google, they say. According to data from ComScore QSearch, there +were roughly 4.9 billion search queries in the United States during the month +of January. + +"The big pie of searches out there isn't getting any bigger" because of MSN's +ad platform, said industry expert Danny Sullivan. "All that's + +Continued ... --- clucene-0.8.13/examples/utf8_test/utf8text/french_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/french_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,30 @@ +réputé +comédie +Hitch - expert en séduction + +Alex Hitchens est un entremetteur (marieur) professionnel qui utilise des moyens peu orthodoxes pour coacher ses clients et jouer avec le destin. Il réussit ainsi avec succès à unir des hommes ordinaires avec des femmes extraordinaires. Malgré tout cela, Hitch ne croit pas en l'amour. +Pourtant sa rencontre avec Sara, une jeune journaliste sexy qui partage les mêmes points de vue cyniques sur les relations amoureuses va les amener sur un territoire inconnu... + + Vidéos : bande annonce + +Interviews + +Amber Valletta +Kevin James +Eva Mendes +Andy Tennant + +À propos du film +Notes de production : + +WILL SMITH COMME JAMAIS… + +Will Smith est l’une des plus célèbres stars de Hollywood. Héros d’action réputé pour son charme et son humour, il n’avait cependant encore jamais joué dans une comédie romantique. James Lassiter, producteur de HITCH et associé de Will Smith dans leur société de production, Overbrook Entertainment, explique : « Cela faisait des années que nous cherchions un bon scénario de comédie romantique pour Will. Ce n’est pas aussi facile que ça en a l’air. Ce genre de scénario est finalement assez rare, et les bons le sont encore plus ! » +James Lassiter et Teddy Zee ont été séduits par le scénario de Kevin Bisch, qui semblait fait pour Smith. Un « conseiller en séduction », un homme cool et sûr de lui aide, contre un peu d’argent, des hommes timides et qui ne brillent pas en société à gagner le cœur de n’importe quelle femme. James Lassiter explique : « C’est la légende urbaine parfaite : l’histoire d’un homme si charismatique qu’il peut enseigner aux autres comment s’y prendre pour séduire. + +« Selon la philosophie de Hitch, poursuit-il, trois jours suffisent pour mettre en lumière le « vrai vous » et conquérir la femme de vos rêves. » Teddy Zee, également producteur chez Overbrook, a lui aussi vu tout de suite le potentiel de l’histoire. « Il y a à la fois quelque chose de très urbain et de très raffiné dans ce scénario ; c’est contemporain, chic et très humain. Il faut aussi noter que l’histoire est racontée du point de vue masculin, ce qui est extrêmement rare dans les comédies romantiques. » + +Le scénariste Kevin Bisch a puisé son inspiration dans ses expériences personnelles à l’université. Après une suite de rendez-vous plus ou moins réussis avec différentes jeunes filles, il a réalisé qu’il finissait généralement assis au bord du lit avec elles, à feuilleter longuement des albums photos… « J’ai eu une révélation, confie-t-il en souriant. Comment avais-je pu être aussi bête ? Elles ne faisaient que tuer le temps en attendant que je les embrasse. Après ça, je me suis intéressé de près à la mécanique et au timing des débuts d’une relation avec une femme, et aux petits détails infimes… » + + + --- clucene-0.8.13/examples/utf8_test/utf8text/german_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/german_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,20 @@ +Damit +können +führt + +Damit Sie sich aus allgemein zugänglichen Quellen ungehindert "unterrichten" können und tagesaktuell informiert sind, bieten wir Ihnen in Zusammenarbeit mit nationalen und internationalen Redaktionen einen Schlagzeilenservice der Sie direkt zum jeweiligen Artikel des Herausgeber führt. + +Grundgesetz der Bundesrepublik Deutschland +Artikel 5 +Meinungs-, Informations-, Pressefreiheit; Kunst und Wissenschaft +(1) Jeder hat das Recht, seine Meinung in Wort, Schrift und Bild frei zu äußern und zu verbreiten und sich aus allgemein zugänglichen Quellen ungehindert zu unterrichten. Die Pressefreiheit und die Freiheit der Berichterstattung durch Rundfunk und Film werden gewährleistet. Eine Zensur findet nicht statt. + +(2) Diese Rechte finden ihre Schranken in den Vorschriften der allgemeinen Gesetze, den gesetzlichen Bestimmungen zum Schutze der Jugend und in dem Recht der persönlichen Ehre. + +(3) Kunst und Wissenschaft, Forschung und Lehre sind frei. Die Freiheit der Lehre entbindet nicht von der Treue zur Verfassung. + + +Anmerkung: Jeder veröffentlichte Artikel wird von Journalisten mehr oder weniger gut recherchiert. Kein Journalist ist frei von Fehlern und frei von Subjektivität seine eigene Sicht zum jeweiligen Thema darzustellen. Aus diesem Grund sollten Sie zur Meinungsbildung immer mehrere Medien nutzen. Wir hoffen Ihnen mit diesem Service dabei helfen zu können. + +Auf die Auswahl der Schlagzeilen hat die German News Redaktion keinen Einfluss. Alle publizierten Schlagzeilen und Einführungstexte (teaser) geben nicht unbedingt die Meinung der German News Redaktion wieder. Eine weitere Verwendung der Schlagzeilen aus German News ist nicht gestattet und kann nur durch Einwilligung des jeweiligen Herausgeber erfolgen. Die Zuordnung zur Themenauswahl erfolgt frei. + --- clucene-0.8.13/examples/utf8_test/utf8text/greek_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/greek_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,14 @@ +στείλτε + + +Ελληνικό Yahoo!: Εργαλεία Επικοινωνίας + Yahoo! Mail - Διαβάστε και στείλτε emails από οπουδήποτε στον κόσμο με το Yahoo! Mail. Μπορείτε να έχετε πρόσβαση ακόμα και στον POP3 mail λογαριασμό σας, μέσω του Web. + Yahoo! Ημερολόγιο - Κάνει εύκολη την οργάνωση της ημέρας σας με τις υπενθυμίσεις, τις e-mail προσκλήσεις, και τη λίστα εκκρεμοτήτων. + Yahoo! Ατζέντα - Οργανώστε τις διευθύνσεις των φίλων σας. Μπορείτε να μεταφέρετε όλες τις πληροφορίες για τους φίλους σας από το Microsoft Outlook, από το Netscape Address Book ή από το Palmtop σας. + Yahoo! Messenger - Στείλτε άμεσα μηνύματα στους φίλους σας ή στους συνεργάτες σας. Σας στέλνει υπενθυμίσεις σε συνεργασία με το Yahoo! Ημερολόγιο, ώστε να μη χάνετε κανένα σημαντικό ραντεβού. + Yahoo! Σημειώσεις - Αποθηκεύστε όλες τις σημειώσεις σας στο Web. Τώρα μπορείτε να έχετε πρόσβαση στις σημειώσεις σας από οπουδήποτε, οποιαδήποτε στιγμή. + + + +Τώρα στο Ελληνικό Yahoo! όλα αυτά τα εργαλεία είναι εντελώς δωρεάν. Και μπορείτε να τα έχετε για πάντα! + --- clucene-0.8.13/examples/utf8_test/utf8text/hebrew_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/hebrew_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,408 @@ +בארצות +Ale + + + בירה נפוצה מאד בעיקר בארצות אנגלוסקסיות, צבעה כהה ולייצורה משתמשים בשמרי תסיסה עילית. בירה קילקני היא בירה מסוג זה. + + + +CO2 + + + גז פחמן דו חמצני הנוצר על ידי השמרים בתהליך התסיסה. זהו הגז אותו אנו חשים בעת שתיית הבירה. + + + +Lager + + + + הבירה הנפוצה ביותר בעולם, צבעה בהיר, קלה לשתיה, בעלת ארומה קלה ונעימה, ידועה גם בשם Pilsner על-שם הבירה הצ'כית המפורסמת ולייצורה משתמשים בשמרי תסיסה תחתית. קרלסברג, טובורג רד וטובורג גרין הן בירה מסוג זה. + + + +Stout + + + צבעה כהה ולייצורה משתמשים בשמרי תסיסה עילית. בירה גינס היא בירה מסוג זה. + + Widget + + + התקן מיוחד שהינו למעשה מיכלון קטן המכיל גז חנקן ומוחדר בעת המילוי לבקבוק או לפחית של גינס Draught. כשפותחים את הבקבוק או הפחית, המיכלון מתבקע ומשחרר את החנקן היוצר את הקצף העשיר והסמיך המיוחד של גינס. + + + +אלכוהול + + + אתנול, או כוהל אתילי. נוצר בזמן התסיסה של השמרים. + + + + +באלטיקה + + + באלטיקה הינה המבשלה הגדולה ביותר לייצור בירה ברוסיה ואחת מהמובילות באירופה. + +למבשלות בירה באלטיקה סוגים רבים ומגוונים של בירה כאשר העיקרון המנחה את המבשלה הוא בישול בירה המבוססת על מרכיבים איכותיים ביותר. + +מבשלות בירה ישראל משווקת בקבוקי באלטיקה 0.5 ליטר מספר 3, 4, 6 ו-9 ופחיות 0.5 ליטר מספר 5 ו-7. + + + +בירה + + + הבירה הינה משקה מוגז בדרך-כלל אלכוהולי עשוי מדגנים שונים. במשך אלפי שנות קיומה הבירה פשטה ולבשה טעמים, ריחות וצבעים בהתאם למסורות, יכולות טכנולוגיות והתקדמות מדעית. הבירה נחשבת למשקה פופולרי בכל היבשות ובקרב כל העמים. + + + +בירה ללא אלכוהול +בירה שתססה בתהליך רגיל אך האלכוהול הורחק ממנה בתהליכי זיקוק או בעזרת ממברנות דוגמת Reverse Osmosis. + + בירה מאלט + + + בירה לא כוהלית המכילה כמות של סוכרים ועל כן מתוקה. הבירה יכולה לתסוס זמן קצר על מנת לסלק טעמים וריחות אופייניים לתירוש. הבירה כהה לרוב בגין הוספת כמות נכבדת של לתת קלוי כהה מאד. + + + + +בירה מתסיסה פראית + + +בירה שאינה מוססת על ידי זן שמרים מוגדר אלא על ידי שמרים הנמצאים באווירת המבשלה. זוהי תסיסה ספונטנית המקובלת בעיקר בבלגיה. + + + + +גינס + + +בירה מסוג Stout, איכותית ביותר. בעלת צבע כהה מאד שמקורו בלתת קלוי היטב. בירה מרירה מאד ובעלת קצף מיוחד ועשיר הנובע מהתערובת הייחודית של חנקן ו-CO2. גינס ייחודית בבקבוק מהפכני. באמצעות התקן מיוחד בתוך הבקבוק משתחררים הגזים עם הפתיחה וכך נוצר קצף עשיר וסמיך וטעם הזהים לבירה הנמזגת מהחבית. + + + +דיאט מאלטי + בירה שחורה דיאט מאלטי בה הוחלף חלק גדול מהסוכרים שבה בממתיקים מלאכותיים כך שכמות הקלוריות בה הינה כמחצית מכמות הקלוריות של בירה מאלטי רגילה ובכל מקרה לא יותר מ 20 קלוריות ל 100 מ"ל. + + + +הלתתה + + + תהליך יצור לתת במהלכו השעורה עוברת הנבטה בתהליך מבוקר של רטיבות וטמפרטורה. תוך כדי נביטת הגרעין מיוצרים בו, מסונתזים, אנזימים המסייעים לפרק את מאגר האנרגיה שבו, העמילנים הנמצאים באנדוספרם. + + +בשלב ראשון מסונתזים האנזימים המאפשרים גישה לתוך תאי העמילן והם מפרקים את דופן התאים המכילים עמילן. בשלב שני מסונתזים אנזימים המסייעים לפרק את העמילנים עצמם, אנזימים עמילוליטיים. + +בשלב זה מופסקת הנביטה בתהליך קלייה. תהליך זה מייבש את הגרעין ו"מקפיא" למעשה את מצבם של האנזימים. למרות החום הרב אליו נחשף הגרעין בתהליך הייבוש, חיוניות האנזימים נשמרת אך הם אינם פעילים. +אנזימים אלה משמשים אותנו בתהליך בתחילת תהליך מיצוי הסוכרים בבית הבישול במבשלת הבירה. + +בתחילת תהליך זה אנו גורסים הלתת ומרטיבים את הלתת במים חמימים. תהליכים אלו מעוררים את האנזימים לפעולה והם מתחילים בתהליכי פירוק העמילנים לסוכרים. סוכרים אלו ישמשו את שמרי הבירה במהלך תסיסתה. + +משטרים שונים של הנבטה וקליה יוצרים סוגים שונים של לתת הנבדלים בצבעם ובטעמם ומאפשרים ליצור מגוון של בירות. + + + +ווינשטפן + + +מבשלה בדרום מזרח גרמניה הנחשבת למבשלה העתיקה בעולם אשר החלה לייצר בירה בשנת 1040. + +הבירה עשויה מתערובת של לתת שעורה ולתת חיטה. הבירה קלה חמצמצה וארומטית. + + + +בירת חיטה הינה בירה שבתהליך הבישול המיוחד שלה מוסיפים לה חיטה ושמרים באיכות הטובה ביותר ומבדלים את הבירה בתכונות הסנסוריות שלה שאותן מזהים דרך החושים: + +טעם מיוחד עם ארומות וניחוחות פירותיים +ראש קצף אחיד ומיוחד +בירה לבנה ומעוננת בעלת עכירות טבעית +אחוז אלכוהול גבוה יחסית, 5.4% + + + +חבית + + + למה בירה מהחבית? + +בגלל הטעם: החשיפה הקצרה לחום בתהליך הפסטור משאירה את טעם הבירה קרוב מאד לטעמה המקורי. בנוסף, כתוצאה מהמזיגה נוזל הבירה משחרר CO2 המשביח את טעם הבירה. הטעם פחות מריר, יותר קליל ופחות מוגז. בירה מהחבית תמיד מוגשת בטמפרטורה הנכונה + +בגלל הטריות: מחזור החביות בשוק קצר ביותר ומרבית החביות נמזגות בתוך שבועיים עד חודש מיום המילוי כך שהבירה טרייה מאד. + + + +חומרי גלם + +חומרי הגלם המשמשים לייצור בירה כוללים: מים, לתת, לתת קלוי, חומרים עמילניים, סוכר (לעתים), כשות, שמרים, חום, CO2. + + + +חומרים עמילניים וסוכר + +עמילן ממקורות צמחיים אחרים משמש כחומר גלם נוסף לייצור בירה יחד עם הלתת. במערב אירופה משתמשים בתירס, במזרח אירופה נעשה שימוש בתירס ובניגריה ובמצריים סורגום הוא העמילן שבשימוש. + +בסוגים מיוחדים של בירה משתמשים בחיטה (דוגמת בירה ווינשטפן). החיטה תורמת סמיכות וקצף בעיקר בבירות מסוג Ale. ניתן להוסיף סוכר ממקורות שונים אך סוכר זה אינו תורם טעם וצבע. תירס ואורז משמשים בייצור בירות איכותיות, קלות וחזקות בעיקר מסוג Lager. + +חוק טוהר הבירה הגרמני משנת 1564 לא מרשה שימוש בחומרים אחרים זולת לתת שעורה. אולם חוק זה אינו מחייב במדינות אחרות. + + + +חיי מדף + + + חיי מדף של בירה מתחלק לשלוש האריזות הקיימות בשוק. + +חבית: שישה חודשים מיום המילוי + +בקבוק: שנים עשר חודשים מיום המילוי + +פחית: שנים עשר חודשים מיום המילוי + + + +טובורג רד + + +בירה כהה מסוג בירה Lager. הבירה מכילה 5.2% אלכוהול, צבעה עמוק וטעמה עשיר. + + + +טובורג גרין + +בירה בהירה, עדינה וטעימה מסוג בירה Lager. הבירה מכילה 4.6% אלכוהול. + + + +טעימות בירה + את הבירות טועמים בטמפרטורה של 15 מע"צ ובטמפרטורה המומלצת שלהן כאשר כוס הטעימה שקופה ונקייה ובדומה לכוס היין, גם מעט מעוגלת בכדי שהארומה לא תברח. + + + +טעימת בירה מזכירה במקצת טעימת יין: + +התרשמות ויזואלית: מתבוננים בבירה ובוחנים את צבע, השקיפות, המראה והקצף. + +הרחה: מריחים ומתרשמים מהארומות השונות. + +לגימה: טועמים ומגלגלים את הבירה בחלל הפה ומניחים ללשון לטעום את קשת הטעמים תוך כדי בליעתה. + + + +כוהל בנפח + + + אחוז הכוהל בבירה מבוטא ביחידות נפח (מ"ל לליטר) + + + +כשות (Hops) + + + כשות הינו צמח מטפס הגדל באירופה וזקוק לקור. בן דודו גדל בארץ כמטפס טפיל. באירופה בארה"ב ובמדינות נוספות מגדלים אותו במיוחד כחומר חשוב ליצור בירה. לכשות תפרחת קטנה בצבע ירוק ובצורת חרוט. בתחתית עלי הכותרת הירוקים מצויות בלוטות קטנות המייצרות חומצת אלפא היא החומר הנותן את הטעם המר לבירה, וגם שמנים אתריים ארומטיים התורמים גם ארומה לבירה. + + + +קיימים זנים שונים של כשות ולכל אחד הריחות והטעמים שלו. הברומאסטר בוחר את הכשות שמתאימה לבירה שברצונו לייצר. + +לבד מארומה לכשות תכונה המעכבת גידול של חיידקים. + +בעבר הוסיפו את שיחי הכשות למיכל ההרתחה אולם כיום עם התפתחות התעשייה מוסיפים כופתיות העשויות מהתפרחת או מיצוי מרוכז שלהן. + + + +לתת (Malt) + + + גרעיני שעורה שעברו תהליך הלתתה בבתי הלתתה מיוחדים. העמילן שבלתת קל לפירוק לסוכר הדרוש לשמרים לתסיסה. שלבי ייצור הלתת: השריית השעורה במים, נביטה, קלייה וייבוש, ניפוי ואחסון. + + + +לתת קלוי + + + לתת שתהליך הקלייה הסופי שלו מתבצע בטמפרטורה גבוהה במיוחד הגורמת להיווצרות צבע כהה וטעם קלייה אופייני. + + + +מאלטי + + + בירה שחורה ללא אלכוהול. מיוצרת מלתת קלוי המקנה לה את צבעה השחור ואת טעמה המיוחד. אינה מכילה אלכוהול בזכות תהליך ייצור מיוחד השונה מייצור בירה רגילה. למאלטי תכונות בריאותיות רבות ומגוונות: מאלטי הוא משקה איזוטוני הנספג במהירות במערכת העיכול ונוזלי הגוף, מאלטי מעשיר את הגוף במגוון סוכרים המתפרקים לאורך זמן וכן מכילה ויטמינים ומינרלים המסייעים לתפקוד מערכות הגוף. + + + +מילוי אספטי + + + + תהליך מילוי ייחודי של משקה לתוך האריזה בצורה המונעת זיהום המשקה האריזה או הפקק, לקבלת אריזה סטרילית. + + + +מילוי קר + + + מילוי של משקאות לתוך אריזתם בטמפרטורה נמוכה. משקאות מוגזים חייבים למלא בטמפרטורה נמוכה כדי למנוע "בריחת" הגז במהלך המילוי. + + + +מים + + + מים הם לכאורה חומר גלם פשוט ביותר אך לא כך הדבר. יש חשיבות להרכב המים ולמומסים המצויים בהם. + +מים רכים, המכילים כמות קטנה של סידן מתאימים ליצור בירות מסוג Lager ו-Pilsner (בירות של תסיסה עילית). העיר פילזן שבצ'כיה ידועה בכל העולם במים הטובים שלה המתאימים מאד ליצור בירות מסוג זה (ומכאן גם השם Pilsner). + +מים קשים, המכילים הרבה סידן מתאימים ליצור הבירות מסוג Ale ו-Stout (בירות של תסיסה עילית הנפוצות באיים הבריטיים). + + + +ערך בריאותי + לבירה ערך בריאותי בשני תחומים חשובים: + +1. זירוז פעילות מערכת השתן והכליות בגוף האדם. + +2. מניעת מחלות בכל הדם והלב. + + + +ערך קלורי + + + + בירה אינה משמינה יותר ממשקה קל רגיל וברוב המקרים אף מכילה פחות קלוריות. + + + +השוואת ערך קלורי של משקאות ל-100 מ"ל משקה: + +בירה קרלסברג: 43 + +בירה טובורג גרין: 39 + +בירה מאלטי: 35 + +בירה מאלטי דיאט: 18 + +חלב 1% שומן: 41 + +חלב 3% שומן: 57 + +משקאות קלים ומיצים: 40-50 + +נקטרים שונים: 45-55 + + + + + +ערך תזונתי + + + + בירה מיוצרת מחומרים טבעיים בלבד! אין בה חומרים מלאכותיים וחומרים משמרים. בירה מכילה מינרלים וויטמינים רבים כגון אשלגן, סידן מגנזיום וזרחן. כולם חומרים חיוניים לגוף האדם. + + + +הרכב תזונתי ל-100 מ"ל בירה + +קלוריות: 43 + +שומנים: 0 + +חלבונים (גרם): 0.1 + +פחמימות (גרם): 4 + +אלכוהול (גרם): 3.9 + + + +פסטור + + פסטור בירה בבקבוקים ובפחיות נועד לשמר את הבירה לתקופת חיי המדף שלה על-ידי השמדת כל המיקרואורגניזמים הנמצאים באריזה. תהליך הפסטור הומצא על-ידי לואי פסטר ועיקרו חימום הבירה לטמפרטורה של 60-70 מעלות צלזיוס למשך מספר דקות. מכיוון שחום פוגע בטעם הבירה, על החימום להיות קצר ככל האפשר. + +פסטור בירה בבקבוקים/פחיות מתבצע במנהרת פסטור מיוחדת על-ידי התזת מים חמים על האריזות לאחר המילוי והפיקוק. המים מחממים את הבירה עד לפסטורה ולאחר מכן מקררים אותה על-ידי התזת מים קרים. + + + +פרוקטוז + + + +סוכר פירות + + + +צלילות + + + שקיפות הבירה. בגמר תהליך התסיסה הבירה עכורה בשל השמרים שבה. השמרים מופרדים לקבלת בירה צלולה. + + + +קילקני + + + +בירה אירית מסוג Ale, עדינה מאד וקלה לשתיה. מבית גינס העולמית. צבעה אדום עמוק והיא מיוצרת מ-100% מאלט אירי משובח. טמפרטורת ההגשה שלה נמוכה (4-6 מעלות). מאפייני הבירה הם מזיגתה הייחודית ושילוב הגזים, חנקן ו-CO2 מעניק לבירה ראש קצף עדין הנשמר לאורך זמן. + + + +קצף +הקצף הינו תכונה חשובה של הבירה ותורם למראה ולהנאה ממנה. הקצף נוצר על ידי החלבונים שבבירה וגז ה-CO2. + + + +קרלסברג +בירה בהירה ומשובחת ביותר מסוג בירה Lager. בעלת טעם ואיכות מיוחדים שהקנו לה שם עולמי בשוק הבירות. מיוצרת עפ"י המסורת הדנית הידועה ומכילה 5.0% אלכוהול. + + + +קרמל + + + סוכר שרוף המקנה למשקאות צבע כהה וטעם ייחודי (קרמלי) + + + +שמרי בירה + + + +השמרים הם אותם מיקרואורגניזמים המסוגלים להתסיס סוכר לגז ולאלכוהול. + +השמרים מתסיסים את הסוכר לצורך הפקת אנרגיה לגדילתם והתרבותם. אולם תוך כדי תהליך התסיסה הם גם מייצרים ומפרישים מאות רבות של חומרים הנותנים ביחד את הטעם האופייני לבירה. + +ישנם זנים שונים ורבים של שמרים. לכל מבשלה השמרים המיוחדים שלה. כל השמרים משתייכים למשפחת שמרים הנקראת Saccharomyces על שום יכולתם להתסיס סוכר. + + + +במבשלות קרלסברג שבקופנהגן, דנמרק, פותחה לראשונה בעולם, לפני כ 150 שנה, שיטת "התרבית הנקיה" (Pure Culture) שהיא אבן יסוד למיקרוביולוגיה המודרנית. השמר הראשון שבודד בשיטה זו נקרא על כן Saccharomyces Carlsbergnesis והוא השמר המשמש עד היום ליצור בירה קרלסברג בעולם כולו וגם במבשלות בירה ישראל בע"מ שבאשקלון. + + + +שעורה + +סוג של דגן ממנו עושים לתת המשמש לייצור בירה. + + + +תסיסה עילית + +בסוג תסיסה זה השמרים עולים לראש מיכל התסיסה בגמר התהליך. טמפרטורת התסיסה גבוהה בין 15-22 מעלות, משך התסיסה קצר בין 3-8 ימים וארומת הבירה היא של פירות. הבירות ממשפחה זו מקורם באיים הבריטים, אנגליה, אירלנד וסקוטלנד וכן בירות מיוחדות מבלגיה, הולנד וגרמניה. סוגי בירות אלו נקראים Ale ו-Stout. גינס וקילקני נמנות על הבירות המיוצרות מסוג תסיסה זה. + + + +תסיסה תחתית + + + +בסוג תסיסה זה השמרים שוקעים לתחתית מיכל התסיסה בגמר התהליך. טמפרטורת התסיסה נמוכה בין 5-15 מעלות, משך התסיסה ארוך בין 2-12 שבועות וארומת הבירה היא של פרחים. בירות אלה נפוצות בעולם ומקורן בצ'כיה, גרמניה, דנמרק והולנד. הבירות הנפוצות ממשפחה זו הן בירה ה-Lager וה-Pilsner. בירות בהירות, קלות לשתיה ובעלות ארומה קלה ונעימה. קרלסברג, טובורג רד וטובורג גרין נמנות על הבירות המיוצרות מסוג תסיסה זה. + + --- clucene-0.8.13/examples/utf8_test/utf8text/japanese_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/japanese_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,28 @@ +見学 +1 ページ / 2 ページ +次へ + + 7月22・23日を利用して,Plzen にいってきました.メインはこのビール博物館&工場見学.ついでに味見も.とても興味深い日を過ごすことが出来ました. + + 多くの方がご存じと思いますが,このPlzensky Prazdroj (プルゼーニュスキー・プラズドロイ)は,ドイツ・ミュンヘンから1842年に導入された低温下における「下面発酵」という醸造技術が,この土地の麦・ホップ・水・風土とうまく調和し,また人々の大きな努力によってまさに花開いたその元祖のビールです.今日「ピルスナービール」と呼ばれるビールが,世界の大きな勢力となっていますが,その「ピルスナー」とはこのPlzen(プルゼーニュ)という街のドイツ名,Pilsen(ピルゼン)の,という意味です. + + その重厚な,しかし爽やかで飲み越しのいいビールは,飲んだ人すべてが世界最高のビールであるというでしょう.麦と水とホップだけから繰り出されるこの味は本当に忘れられないものです. + + ちなみに,このビール,特にバリング度(最初にモルトからとる麦汁を水でわったときの麦汁濃度)が12%のもの(Prazdroj ではその下は10%,一般に12%を越えるものは少ない)は,のどが渇いたから一気に飲む,というような飲み方はもはや出来ず,むしろパンの代わりに少しずつごくごく飲む,というのがちょうどいいようです.たくさん飲むとものすごくのどが渇くので,のどを潤すにはむしろ良くないかもしれません.しかし歴史的に見ると,キリスト教では「ビールは液体のパン」として重要な役割をしています.ワインはキリストの血,パンはキリストの肉,ビールは液体のパン,です.実際,修道院などでは断食期間に水の代わりのビールで栄養を補給していたという話もあり,時代によっては醸造の許可が教会関係だけに与えられていたり,また教会が免許の交付権を持っていたり,というもありました. + + 工場に行ってみると,一面モルトを煮出している匂いがして,あ~あ,麦だぁ,という感じがします.世界中から年間5万人もの人が訪れるというこのビール博物館共々,我々ビールのみにも,またそうでない人にとっても大変興味深いものだと思います. + +  + +このページの写真も,クリックすると大きな原版が見られるようになっています.ものすごく大きいですが,良かったらそちらもご覧下さい. + + + + +これが Plzen 旧市街にある「ビール醸造博物館」です.昔実際にビールの醸造所であり,パブとして使われたこともある建物で,ビールの醸造の道具から昔の衣装,ビアホールの内装,また地下にはその昔氷を入れて冷蔵庫にしていた貯蔵倉もあり,とにかく見るところはたくさんあります. これは Plzensky Prazdroj (Pilsner Urquell) の会社のバックアップで運営されています.中にはいると解説書を貸してくれます.日本語の解説書もあります. + +この入り口を見ると,いかにも醸造所かパブですね.中には Urquell の日本での広告もあります.はっきりはわかりませんが,印刷の感じからすると1960年代ではないかと思います.日本での商標登録証ということで Urquell の商標登録の証書があるのですが,ちょっと意味の分からないところがあって,若干謎です. 残念! Plzensky Prazdroj の工場の正門(Historical gate)です.ちょうど改装工事中で肝腎の所が見られませんでした.旧市街の中心から5分ぐらいのところです. + +この Gate が壁画にしてありました. これがあの工場です.大きな写真をご覧下されば,左の方に Prazdroj と書いてあることがわかります. + +これは前の写真の右側に当たるところです.今は使っているのかどうかわかりませんが,Gate を通ってこの屋根の下まで鉄道の線路が引かれており,昔はそれを使って各地へ輸送していたことがわかります. 12時半集合で,ビデオ上映の後工場内の見学ツアーがあります.最初に大きなボードで Prazdroj の製法について説明があり,その後工場内の見学,ついで地下の発酵貯蔵用の倉を見学です.とても寒かった.でもその温度の下であのようなリッチなビールができあがるのです.まさかいいといわれるとは思わなかったので,全然写真を撮りませんでしたが,他の人が聞いたらOKが出たのでついでにとって見ました.この中でちょうどビールが発酵中です.. --- clucene-0.8.13/examples/utf8_test/utf8text/korean_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/korean_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,51 @@ +10 일부터 7일간 독일 +금 +융 +포 +커스 + + +세계를 정복할 한국기업 + + + +세계일류를 꿈꾸는 삼성전자 + +삼성전자는 1988 년 하드디스크드라이브(HDD) 사업을 시작한 이래 지난해 처음으로.. + + '세빗2005' 한국관 중소업체 눈부신 성과- 머니투데이 03/16 16:07 + '세빗 2005' 한국공동관에 참가한 중소업체들이 선전을 거뒀다. 지난 + 10 일부터 7일간 독일 + + + 하노버 '세빗 2005' 에서 한국관에 참가한 중소 IT 벤처업체들은 잠정 집계 결과, 수출상담액은 12 억 5000 만달러, 계약금액은 2 억5000 만달러를 넘은 것으로 ... + + [세빗 2005] 거원시스템, 유럽 MP3 공략 본격화- 아이뉴스 03/16 13:20 + <아이뉴스24> 거원시스템이 유럽 MP3 기기 시장 공략을 본격화한다. 박남규 거원시스템 사장은 15일(현지시간) 독일 하노버에서 열리고 있는 세빗 2005 전시회에서 "이번처럼 세빗에 대형 부스를 마련하기는 처음"이라며 "유럽에 지사를 설립, ... + + LS그룹 "세계 일류기업 발돋움"- 디지탈타임즈 03/15 11:07 + CI선포식 가져… 국내외 브랜드 홍보 적극 나서 LS그룹(회장 구자홍ㆍ구 LG전선그룹)은 14일 그랜드인터콘티넨탈호텔에서 가진 CI(통합기업이미지)선포식을 통해 LS브랜드를 대내외에 공포하고, 산업용 전기ㆍ전자ㆍ소재분야의 세계일류그룹으로 도... + + [세빗2005]레인콤ㆍ삼성전자, MP3P시장 넘버3 경쟁- 디지탈타임즈 03/15 03:57 + 대형 단독부스 설치 공격적 마케팅 올 판매목표 상향… 수성ㆍ탈환 총력전 레인콤과 삼성전자가 MP3플레이어 세계시장 3위자리를 놓고 격돌한다.애플과 크리에이티브가 1, 2위를 차지하고 있는 가운데 두 회사는 올해 판매대수 목표를 대폭 상향조... + + 세빗에서 확인한 양극화- 이데일리 03/14 16:56 + 세계 최대 규모의 정보통신 박람회인 `세빗(CeBIT)2005` 가 지난주부터 독일 하노버에서 열리고 있습니다. 지난 1월 미국 라스베가스에서 열린 CES에 이어 우리나라 기업들이 세계인의 주목을 받아 IT강국의 위상을 재차 확인하는 자리였습니다. 하... + + + + + LG전자 "2010년 세계톱3 기필코 달성"- 머니투데이 03/14 15:41 + "올해 매출을 30조원으로 늘려 글로벌 톱5 기업에 들고 이를 바탕으로 2010년에는 글로벌 톱3가 된다" LG전자의 중장기 비젼이다.막연하게 1등 기업이 되겠다는 선언에 그치는 게 아니라 구체적인 시기와 목표를 제시하고 있다. 도전 역시 만만치 ... + + IT산업 미래는 한국이다 <美일간지>- 연합뉴스 03/14 09:38 + =실리콘 밸리 "한국은 미래로 가는 타임머신" 워싱턴 박노황 특파원 = 미국의 일간 샌프란시스코 크로니클은 13일 '미래는 한국'이라는 제하의 기사를 통해 세계 제일의 광대역 인터넷망및 휴대 전화 보급률을 누리고 있는 IT 강국 한국의 현황을 ... + + 자기만족에 빠진 소니, 삼성에 패배- 동아일보 03/12 09:09 + ‘한국 삼성전자와 일본 소니(Sony)의 역전.’ 뉴욕타임스는 10일 1997년 이후 7년 만에 삼성전자와 소니의 위상이 뒤바뀌었다고 전했다.1997년은 삼성전자가 한국에 몰아닥친 외환위기에서 벗어나기 위해 사투를 벌이던 때이자 7일 소니 최고경영... + + [기획특집 - 글로벌 리더기업Ⅲ]LG필립스LCD- 헤럴드경제 03/11 11:41 + 앞선 투자ㆍ기술…LCD 최강자로 지난 2004년 7월, LG필립스LCD는 한국 기업으로는 최초로 한국과 미국 증시 동시 상장에 성공했다.이는 남들보다 한발 앞선 적기 투자와 기술개발로 세계 TFT-LCD 업계를 이끌어온 리더로서의 기업가치를 다시 한번 ... + + [기획특집 - 글로벌 리더기업Ⅰ] 일등만이 산다- 헤럴드경제 03/11 11:41 + 세계 초일류 기업으로의 도약을 위한 글로벌 경영은 이미 대기업들의 선택이 아닌 필수로 자리잡았다.국내 대기업들도 글로벌 경영에 박차를 가해 이젠 글로벌 리더 기업으로 자리매김하고 있거나 자리를 굳혀가고 있는 기업들이 상당수에 이른다.... --- clucene-0.8.13/examples/utf8_test/utf8text/polish_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/polish_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,65 @@ +spółka +Fermentacja to proces, w wyniku którego wytworzona w warzelni brzeczka staje się piwem. Do ochłodzonej brzeczki dodawane są drożdże, które zamieniają cukier w dwutlenek węgla i alkohol. Oprócz tego drożdże formują tysiące innych komponentów, które podczas fermentacji nadają piwu określony smak. + + +Proces fermentacji prowadzimy w ogromnych, cylindrycznych, nowoczesnych zbiornikach fermentacyjnych zwanych tankofermentorami. Największe z nich mogą pomieścić po 3 600 hektolitrów piwa czyli 720 000 półlitrowych butelek np. piwa Frater. + +W celu zapewnienia optymalnych temperatur dla procesu fermentacji tanki muszą być chłodzone. Po procesie fermentacji piwo zwane "piwem młodym" musi otrzymać swój pełny smak. Odbywa się to podczas następnego cyklu produkcyjnego, jakim jest leżakowanie (dojrzewanie) w temperaturach minusowych. + +Cały proces fermentacji i dojrzewania zajmuje około dwóch - trzech tygodni. + + + + +drożdży +spółka + +3 marca 2004 roku Browar Belgia i spółka Dominium, reprezentująca Opactwo o.o. Cystersów w Szczyrzycu, podpisali kontrakt na produkcję piwa. Umowa jest zwieńczeniem kilkuletnich działań obu stron, zmierzających do wykorzystania unikalnej receptury. Wprowadzenie piwa Frater, warzonego według starego przepisu oznacza kontynuację kulturowego dziedzictwa klasztoru. Tradycyjna, wielowiekowa receptura dająca podstawy unikalnego piwa, została połączona z nowoczesną technologią. + + + + + + + +Piwo warzone przez cystersów ze Szczyrzyca ma wielowiekową tradycję. Lata praktyki i wnikliwych obserwacji pozwoliły zakonnikom stworzyć niepowtarzalną recepturę, będącą idealnym połączeniem czterech składników (słodu, wody, chmielu i drożdży). Została ona przywrócona do życia w postaci Fratera, a poprzez wykorzystani + + + + + + +Jak wskazują zachowane dokumenty, browar w Szczyrzycu powstał w 1623 roku i jest jednym z najstarszych browarów w Polsce. Wedle starych kronik od początku XVII wieku mnisi w Szczyrzycu produkowali napój nazywany "cerewizją", robiony z palonego ziarna, cykorii, wody i chmielu. Cerewizja zawierała do 1 % alkoholu i była pita zamiast kawy i herbaty, chłodząc gardła spragnionych rolników i mnichów pracujących na terenach należących do opactwa. Mury w klasztorze postawiono w 1824 r., wcześniej zabudowania były drewniane. + + +Do 1948 r. cała produkcja prowadzona była ręcznie, co pozwalało rozlewać rocznie 250 tys. hektolitrów złocistego napoju. Przez ponad sto lat piwo leżakujące w beczkach chłodzono potężnymi blokami lodowymi wycinanymi zimą z pobliskiego stawu. Lód nie roztapiał się nawet latem, bo w podziemiach browaru przez cały rok temperatura nie przekraczała 2 stopni C. + +Najlepsze czasy browaru przypadają na okres między 1925 a 1945 rokiem. W 1925 roku Eugeniusz Czerny wydzierżawił browar. Warzono wówczas piwo "Złoty zdrój" słynące z wyjątkowego smaku i rozsławione sloganem "Mocne jak głos kuryera, słodkie jak głos Kiepury". Zachowało się wiele pamiątek z tego okresu jak specjalne kufle z pokrywkami i etykiety. Można je obejrzeć w przyklasztornym muzeum. Czerny kontynuował produkcję do końca II wojny światowej. W 1939 r. zakład przejęli Niemcy, pozwalając na kontynuowanie nadal produkcji pod okiem Czernego. +W 1951 roku większość majątku browaru przejęło państwo. Wówczas był to jedyny klasztorny browar między Łabą a Władywostokiem. + + +W latach powojennych browar podupadł. Piwo, sprzedawane pod najróżniejszymi wymyślnymi nazwami ("Czarny Mnich", "Pils Klasztorny", "Eliksir", "Dama Pik", "Gryf"), nie cieszyło się uznaniem smakoszy. Piwo produkowane w Szczyrzycu, można było kupić tylko w okolicznych miejscowościach: Limanowej, Myślenicach, Rabce. W 1993 r. Opactwo Ojców Cystersów odzyskało browar i kontynuowało produkcję piwa. Pomieszczenia zakładu, choć nie były zdewastowane, wymagały gruntownego remontu. Podobnie jak i urządzenia. Nie dało się na nich produkować dobrej jakości piwa, a szczególnie tego, jakie było warzone w przeszłości. Opactwo, nie chcąc firmować swoim wizerunkiem tak złej jakości produktu, nie posiadając środków na remont urządzeń i obiektu, postanowiło zaprzestać produkcji. W 1996 r. browar, po 373 (!) latach nieprzerwanej pracy, zakończył produkcję piwa, a wkrótce potem został zamknięty. + + + + + + +Piwo jest jednym z najstarszych napojów znanych ludzkości. Warzono je już w starożytnym Egipcie. Pierwsze piwa o niewielkiej zawartości alkoholu przyrządzano z wieloma dodatkami, a ich głównym przeznaczeniem było gaszenie pragnienia. +Napój ten nierozerwalnie wiąże się z tradycjami religijnymi. W starożytnym Egipcie był warzony przez kapłanów, a w średniowiecznej Europie przez mnichów zakonnych. Od XI wieku piwo było warzone przez setki mnichów z całego świata. W Polsce warzelnictwo na dużą skalę zapoczątkowali cystersi w XIII w. +W Europie wielkim powodzeniem cieszą się od dziesięcioleci tzw. piwa klasztorne. W wielu zakonach założonych w średniowieczu mnisi instalowali warzelnie, w których produkowali piwo według własnych receptur cieszące się powodzeniem. Niektóre po wielu latach działania z powodu problemów finansowych oddawały licencję innym, nie klasztornym browarom, i w ten sposób "religijne" piwo trafiło na komercyjny rynek. +Najbardziej znane marki klasztorne to Leffe, Grimbergen i Steenbrugge (współpracujący z Palm Breweries). + + + + + + + + +Chwila, na którą czekasz przez cały dzień. Ciche westchnienie, towarzyszące otwarciu chłodnej butelki. Głęboki, złocisty kolor, przyjemny, naturalny aromat, a już po chwili lekki, szlachetny smak. Na tę chwilę warto było czekać. + +Frater. Piwo, którego duch wywodzi się z głębi cysterskich manuskryptów, a charakter nadaje mu współczesne pojmowanie szlachetnej sztuki warzenia. +W początkach minionego milennium na ziemie polskie przybyli z zachodu pierwsi mnisi. Wśród rozlicznych praktykowanych w zakonach nauk i sztuk poczesne miejsce zajmowała sztuka warzenia piwa. Wraz z zakapturzonymi braćmi przybył do Polski ten znakomity, złocisty napój oraz pnące się po zakonnych murach szlachetne odmiany chmielu. +W XIII wieku w malowniczej podbeskidzkiej miejscowości Szczyrzyc powstało cysterskie opactwo. Zgodnie z regułą część czasu mnisi poświęcali na wytężoną pracę, której efektem było słynące z niezrównanego smaku, starannie warzone złociste piwo. Mądrość gromadzona przez stulecia pozwoliła stworzyć szlachetny, złocisty napój, który prócz barwy, smaku iaromatu prawdziwego pilsnera, ma również duszę. Tajemnicę, którą odkrywasz z każdym jego łykiem. Spróbuj w pełni docenić tę chwilę prawdziwej, pełnej, głębokiej przyjemności. + --- clucene-0.8.13/examples/utf8_test/utf8text/russian_utf8.txt 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/examples/utf8_test/utf8text/russian_utf8.txt 2005-03-18 12:29:39.000000000 -0700 @@ -0,0 +1,11 @@ +Великие + +тайны наших любимцев + +Источник: ПРАВДА.Ру +Постоянный адрес: http://www.pravda.ru/science/2004/6/20/55/18599_animals.html + +Чудят не только люди, но и домашние питомцы. Мы решили пополнить «каталог историй» о странных выходках кошек, собак, птичек и другой живности, обитающей по соседству с человечеством + +Когда зоопсихологов просят объяснить странности в поведении животных или их неожиданно фантастическую прозорливость, они честно признаются, что не в силах дать разумное истолкование даже сравнительно часто встречающимся и описанным в соответствующей литературе отклонениям в поведении домашних животных. + --- clucene-0.8.13/src/CLucene/LuceneUTF8.h 1969-12-31 17:00:00.000000000 -0700 +++ clucene-0.8.13.new/src/CLucene/LuceneUTF8.h 2005-03-18 12:34:21.000000000 -0700 @@ -0,0 +1,98 @@ +#ifndef LUCENEUTF8_H +#define LUCENEUTF8_H + +#ifdef UTF8 +// This code is derived from glib 2.4 which is also covered by the LGPL + + typedef unsigned long cl_uchar_t; + typedef cl_uchar_t gunichar; + typedef unsigned short guint16; + typedef short gint16; + typedef char gchar; + typedef unsigned char guchar; + + #define stringICompare lc_utf8_stricmp + + #undef toLower + #undef isSpace + #undef isDigit + #undef isAlNum + #define toLower lc_unichar_tolower + #define isSpace lc_utf32_isspace + #define isDigit lc_utf32_isdigit + #define isAlNum lc_utf32_isalnum + int lc_utf8_stricmp( const char * str1, const char * str2 ); + LPSTR lc_utf8_strcasefold( const char * str1 ); + int lc_unichar_to_utf8 (cl_uchar_t c, char *outbuf); + bool lc_utf32_isletter(cl_uchar_t c); + bool lc_utf32_isalnum(cl_uchar_t c); + bool lc_utf32_isdigit(cl_uchar_t c); + bool lc_utf32_isspace(cl_uchar_t c); + cl_uchar_t lc_utf8_get_char (const char *p, int *len); + char * lc_ucs4_to_utf8 (const cl_uchar_t *str, int len); + cl_uchar_t lc_unichar_tolower (cl_uchar_t c); + extern const char * const lc_utf8_skip; + #define lc_utf8_next_char(p) (char *)((p) + lc_utf8_skip[*(guchar *)(p)]) + + +// UTF8 Macros + +#define UTF8_COMPUTE(Char, Mask, Len) \ + if (Char < 128) \ + { \ + Len = 1; \ + Mask = 0x7f; \ + } \ + else if ((Char & 0xe0) == 0xc0) \ + { \ + Len = 2; \ + Mask = 0x1f; \ + } \ + else if ((Char & 0xf0) == 0xe0) \ + { \ + Len = 3; \ + Mask = 0x0f; \ + } \ + else if ((Char & 0xf8) == 0xf0) \ + { \ + Len = 4; \ + Mask = 0x07; \ + } \ + else if ((Char & 0xfc) == 0xf8) \ + { \ + Len = 5; \ + Mask = 0x03; \ + } \ + else if ((Char & 0xfe) == 0xfc) \ + { \ + Len = 6; \ + Mask = 0x01; \ + } \ + else \ + Len = -1; + +#define UTF8_LENGTH(Char) \ + ((Char) < 0x80 ? 1 : \ + ((Char) < 0x800 ? 2 : \ + ((Char) < 0x10000 ? 3 : \ + ((Char) < 0x200000 ? 4 : \ + ((Char) < 0x4000000 ? 5 : 6))))) + + +#define UTF8_GET(Result, Chars, Count, Mask, Len) \ + (Result) = (Chars)[0] & (Mask); \ + for ((Count) = 1; (Count) < (Len); ++(Count)) \ + { \ + if (((Chars)[(Count)] & 0xc0) != 0x80) \ + { \ + (Result) = (gunichar) -1; \ + break; \ + } \ + (Result) <<= 6; \ + (Result) |= ((Chars)[(Count)] & 0x3f); \ + } + + +#endif + +#endif //LUCENEUTF8_H --- clucene-0.8.13/src/CLucene/analysis/standard/StandardFilter.cpp 2004-08-14 00:16:11.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/analysis/standard/StandardFilter.cpp 2005-03-18 12:34:25.000000000 -0700 @@ -51,7 +51,7 @@ const char_t *p = text; int len = 0; while (*p) { - uchar_t c = lc_utf8_get_char (p, &len); + cl_uchar_t c = lc_utf8_get_char (p, &len); if (c != '.') trimmed.append((char_t)c); p = lc_utf8_next_char (p); --- clucene-0.8.13/src/CLucene/analysis/standard/StandardTokenizer.cpp 2004-08-20 21:22:56.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/analysis/standard/StandardTokenizer.cpp 2005-03-18 12:34:25.000000000 -0700 @@ -94,16 +94,16 @@ void StandardTokenizer::close(){ } - uchar_t StandardTokenizer::readChar() { - uchar_t ch = rd.GetNext(); + cl_uchar_t StandardTokenizer::readChar() { + cl_uchar_t ch = rd.GetNext(); /* Increment by 1 because we're speaking in terms of characters, not ** necessarily bytes: */ rdPos++; return ch; } - void StandardTokenizer::unReadChar() { - rd.UnGet(); + void StandardTokenizer::unReadChar(cl_uchar_t ch) { + rd.UnGet(ch); rdPos--; } @@ -121,7 +121,7 @@ * StandardTokenizerConstants::tokenImage. */ Token* StandardTokenizer::next() { while (!EOS) { - uchar_t ch = readChar(); + cl_uchar_t ch = readChar(); if (SPACE) { continue; @@ -141,7 +141,7 @@ return NULL; } - Token* StandardTokenizer::ReadNumber(const char_t* previousNumber, const uchar_t prev) { + Token* StandardTokenizer::ReadNumber(const char_t* previousNumber, const cl_uchar_t prev) { /* previousNumber is only non-NULL if this function already read a complete ** number in a previous recursion, yet has been asked to read additional ** numeric segments. For example, in the HOST "192.168.1.3", "192.168" is @@ -160,7 +160,7 @@ } str.append(prev); const bool signExhausted = (prev == '-'); - uchar_t ch = prev; + cl_uchar_t ch = prev; CONSUME_DIGITS; @@ -177,7 +177,7 @@ ** so this is not a valid number. */ if (!EOS) { /* Unread the character that stopped CONSUME_DIGITS: */ - unReadChar(); + unReadChar(ch); } return NULL; } @@ -188,13 +188,13 @@ if (DECIMAL) { str.append(ch); } else { - unReadChar(); + unReadChar(ch); goto SUCCESSFULLY_EXTRACTED_NUMBER; } CONSUME_DIGITS; if (!DIGIT && !DECIMAL) { - unReadChar(); + unReadChar(ch); } else if (!EOS && DECIMAL && isDigit(rd.Peek())) { /* We just read the fractional digit group, but it's also followed by ** a decimal symbol and at least one more digit, so this must be a @@ -204,11 +204,11 @@ } SUCCESSFULLY_EXTRACTED_NUMBER: - uchar_t rightmost = RIGHTMOST(str); + cl_uchar_t rightmost = RIGHTMOST(str); /* Don't including a trailing decimal point. */ if (rightmost == '.') { SHAVE_RIGHTMOST(str); - unReadChar(); + unReadChar(ch); rightmost = RIGHTMOST(str); } /* If all we have left is a negative sign, it's not a valid number. */ @@ -220,10 +220,10 @@ return createToken(str, tokenType); } - Token* StandardTokenizer::ReadAlphaNum(const uchar_t prev) { + Token* StandardTokenizer::ReadAlphaNum(const cl_uchar_t prev) { StringBuffer str; str.append(prev); - uchar_t ch = prev; + cl_uchar_t ch = prev; CONSUME_WORD; if (!EOS) { @@ -254,7 +254,7 @@ ** Even though hosts, e-mail addresses, etc., could have a dotted-segment ** that begins with a dot or a dash, it's far more common in source text ** for a pattern like "abc.--def" to be intended as two tokens. */ - uchar_t ch = rd.Peek(); + cl_uchar_t ch = rd.Peek(); if (!(DOT || DASH)) { bool prevWasDot; bool prevWasDash; @@ -349,7 +349,7 @@ str.append('@'); return ReadAt(str); } else { - unReadChar(); + unReadChar(ch); } } @@ -363,7 +363,7 @@ Token* StandardTokenizer::ReadApostrophe(StringBuffer& str) { TokenTypes tokenType = lucene::analysis::standard::APOSTROPHE; const int_t specialCharPos = rdPos; - uchar_t ch; + cl_uchar_t ch; CONSUME_ALPHAS; if (RIGHTMOST_IS(str, '\'') || CONSUMED_NOTHING_OF_VALUE) { @@ -373,7 +373,7 @@ tokenType = lucene::analysis::standard::ALPHANUM; } if (!EOS) { - unReadChar(); + unReadChar(ch); } return createToken(str, tokenType); @@ -392,7 +392,7 @@ Token* StandardTokenizer::ReadCompany(lucene::util::StringBuffer& str) { const int_t specialCharPos = rdPos; - uchar_t ch; + cl_uchar_t ch; CONSUME_WORD; if (CONSUMED_NOTHING_OF_VALUE) { @@ -404,7 +404,7 @@ return createToken(str, lucene::analysis::standard::ALPHANUM); } if (!EOS) { - unReadChar(); + unReadChar(ch); } return createToken(str, lucene::analysis::standard::COMPANY); --- clucene-0.8.13/src/CLucene/analysis/standard/StandardTokenizer.h 2004-08-14 00:17:53.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/analysis/standard/StandardTokenizer.h 2005-03-18 12:34:16.000000000 -0700 @@ -21,9 +21,9 @@ int_t tokenStart; // Advance by one character, incrementing rdPos and returning the character. - uchar_t readChar(); + cl_uchar_t readChar(); // Retreat by one character, decrementing rdPos. - void unReadChar(); + void unReadChar(cl_uchar_t ch); // createToken centralizes token creation for auditing purposes. Token* createToken(StringBuffer& sb, TokenTypes tokenCode); @@ -47,9 +47,9 @@ Token* next(); // Reads for number like "1"/"1234.567", or IP address like "192.168.1.2". - Token* ReadNumber(const char_t* previousNumber, const uchar_t prev); + Token* ReadNumber(const char_t* previousNumber, const cl_uchar_t prev); - Token* ReadAlphaNum(const uchar_t prev); + Token* ReadAlphaNum(const cl_uchar_t prev); // Reads for apostrophe-containing word. Token* ReadApostrophe(StringBuffer& str); --- clucene-0.8.13/src/CLucene/analysis/Analyzers.cpp 2004-08-13 00:30:30.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/analysis/Analyzers.cpp 2005-03-18 12:34:25.000000000 -0700 @@ -13,7 +13,7 @@ input = in; //; input is in tokenizer base class (bug fix thanks to Andy Osipienko) } -uchar_t CharTokenizer::normalize(const uchar_t c) +cl_uchar_t CharTokenizer::normalize(const cl_uchar_t c) { return c; } @@ -23,7 +23,7 @@ #ifdef UTF8 int_t start = input->position(); while (true) { - uchar_t c; + cl_uchar_t c; offset++; c = input->readChar(); if (!c) @@ -55,7 +55,7 @@ #else int_t start = offset; while (true) { - uchar_t c; + cl_uchar_t c; offset++; if (bufferIndex >= dataLen) { dataLen = input->read(ioBuffer,0,IO_BUFFER_SIZE); @@ -90,7 +90,7 @@ // Collects only characters which satisfy // {@link Character#isLetter(char_t)}. -bool LetterTokenizer::isTokenChar(const uchar_t c) { +bool LetterTokenizer::isTokenChar(const cl_uchar_t c) { //printf("checking if %d is a letter(%d)\n", c, Misc::isLetter(c));fflush(NULL); return Misc::isLetter(c)!=0; } @@ -98,7 +98,7 @@ // Collects only characters which satisfy // {@link Character#isLetter(char_t)}. -uchar_t LowerCaseTokenizer::normalize(const uchar_t chr) { +cl_uchar_t LowerCaseTokenizer::normalize(const cl_uchar_t chr) { //printf("normalizing lowering %d\n", chr);fflush(NULL); return toLower(chr); } @@ -106,7 +106,7 @@ // Collects only characters which do not satisfy // {@link Character#isWhitespace(char_t)}. -bool WhitespaceTokenizer::isTokenChar(const uchar_t c) { +bool WhitespaceTokenizer::isTokenChar(const cl_uchar_t c) { return isSpace(c)==0; //(return true if NOT a space) } --- clucene-0.8.13/src/CLucene/analysis/Analyzers.h 2004-04-24 15:43:47.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/analysis/Analyzers.h 2005-03-18 12:34:17.000000000 -0700 @@ -14,7 +14,7 @@ int_t offset, bufferIndex, dataLen; const static int_t MAX_WORD_LEN = 255; const static int_t IO_BUFFER_SIZE = 1024; - uchar_t buffer[MAX_WORD_LEN+1]; + cl_uchar_t buffer[MAX_WORD_LEN+1]; char_t ioBuffer[IO_BUFFER_SIZE+1]; //Reader* input; input is in tokenizer base class (bug fix thanks to Andy Osipienko) protected: @@ -22,12 +22,12 @@ // tokenizer generates as tokens adjacent sequences of characters which // satisfy this predicate. Characters for which this is false are used to // define token boundaries and are not included in tokens. - virtual bool isTokenChar(const uchar_t c) = 0; + virtual bool isTokenChar(const cl_uchar_t c) = 0; // Called on each token character to normalize it before it is added to the // token. The default implementation does nothing. Subclasses may use this // to, e.g., lowercase tokens. - virtual uchar_t normalize(const uchar_t c); + virtual cl_uchar_t normalize(const cl_uchar_t c); public: CharTokenizer(Reader* in); @@ -52,7 +52,7 @@ protected: // Collects only characters which satisfy // {@link Character#isLetter(char_t)}. - bool isTokenChar(const uchar_t c); + bool isTokenChar(const cl_uchar_t c); }; @@ -79,7 +79,7 @@ protected: // Collects only characters which satisfy // {@link Character#isLetter(char_t)}. - uchar_t normalize(const uchar_t chr); + cl_uchar_t normalize(const cl_uchar_t chr); }; @@ -94,7 +94,7 @@ protected: // Collects only characters which do not satisfy // {@link Character#isWhitespace(char_t)}. - bool isTokenChar(const uchar_t c); + bool isTokenChar(const cl_uchar_t c); }; --- clucene-0.8.13/src/CLucene/LuceneUTF8.cpp 2004-07-12 23:52:55.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/LuceneUTF8.cpp 2005-03-18 12:34:25.000000000 -0700 @@ -1,15 +1,8 @@ -#ifdef UTF8 #include "CLucene/StdHeader.h" +#ifdef UTF8 +#include "CLucene/LuceneUTF8.h" #include "CLucene/util/StringBuffer.h" -#include "gunichartables.h" -// This code is derived from glib 2.4 which is also covered by the LGPL - -typedef uchar_t gunichar; -typedef unsigned short guint16; -typedef short gint16; -typedef char gchar; -typedef unsigned char guchar; /* These are the possible character classifications. * See http://www.unicode.org/Public/UNIDATA/UnicodeData.html @@ -48,61 +41,8 @@ G_UNICODE_SPACE_SEPARATOR } GUnicodeType; +#include "gunichartables.h" -#define UTF8_COMPUTE(Char, Mask, Len) \ - if (Char < 128) \ - { \ - Len = 1; \ - Mask = 0x7f; \ - } \ - else if ((Char & 0xe0) == 0xc0) \ - { \ - Len = 2; \ - Mask = 0x1f; \ - } \ - else if ((Char & 0xf0) == 0xe0) \ - { \ - Len = 3; \ - Mask = 0x0f; \ - } \ - else if ((Char & 0xf8) == 0xf0) \ - { \ - Len = 4; \ - Mask = 0x07; \ - } \ - else if ((Char & 0xfc) == 0xf8) \ - { \ - Len = 5; \ - Mask = 0x03; \ - } \ - else if ((Char & 0xfe) == 0xfc) \ - { \ - Len = 6; \ - Mask = 0x01; \ - } \ - else \ - Len = -1; - -#define UTF8_LENGTH(Char) \ - ((Char) < 0x80 ? 1 : \ - ((Char) < 0x800 ? 2 : \ - ((Char) < 0x10000 ? 3 : \ - ((Char) < 0x200000 ? 4 : \ - ((Char) < 0x4000000 ? 5 : 6))))) - - -#define UTF8_GET(Result, Chars, Count, Mask, Len) \ - (Result) = (Chars)[0] & (Mask); \ - for ((Count) = 1; (Count) < (Len); ++(Count)) \ - { \ - if (((Chars)[(Count)] & 0xc0) != 0x80) \ - { \ - (Result) = -1; \ - break; \ - } \ - (Result) <<= 6; \ - (Result) |= ((Chars)[(Count)] & 0x3f); \ - } static const gchar utf8_skip_data[256] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, @@ -118,6 +58,7 @@ const gchar * const lc_utf8_skip = utf8_skip_data; //#define g_utf8_next_char(p) (char *)((p) + g_utf8_skip[*(guchar *)(p)]) +#define lc_utf8_next_char(p) (char *)((p) + lc_utf8_skip[*(guchar *)(p)]) /** * g_utf8_get_char: @@ -131,7 +72,7 @@ * * Return value: the resulting character **/ -uchar_t lc_utf8_get_char (const char *p, int *len) +cl_uchar_t lc_utf8_get_char (const char *p, int *len) { int i, mask = 0; gunichar result; @@ -177,7 +118,7 @@ */ #define G_N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0])) -bool lc_utf32_isletter(uchar_t c) +bool lc_utf32_isletter(cl_uchar_t c) { int t = TYPE (c); switch(t) @@ -191,7 +132,7 @@ } } -bool lc_utf32_isalnum(uchar_t c) +bool lc_utf32_isalnum(cl_uchar_t c) { int t = TYPE (c); switch(t) @@ -208,7 +149,7 @@ } } -bool lc_utf32_isdigit(uchar_t c) +bool lc_utf32_isdigit(cl_uchar_t c) { int t = TYPE (c); switch(t) @@ -234,7 +175,7 @@ * * Return value: %TRUE if @c is a punctuation character **/ -bool lc_utf32_isspace (uchar_t c) +bool lc_utf32_isspace (cl_uchar_t c) { switch (c) { @@ -268,7 +209,7 @@ * If @c is not an upperlower or titlecase character, * or has no lowercase equivalent @c is returned unchanged. **/ -uchar_t lc_unichar_tolower (uchar_t c) +cl_uchar_t lc_unichar_tolower (cl_uchar_t c) { int t = TYPE (c); if (t == G_UNICODE_UPPERCASE_LETTER) @@ -464,7 +405,7 @@ stringlen+=charlen; } next: - p = g_utf8_next_char (p); + p = lc_utf8_next_char (p); } result[stringlen] = 0; return result; @@ -472,8 +413,8 @@ int lc_utf8_stricmp( const char * str1, const char * str2 ) { - char *cmp1 = g_utf8_strcasefold(str1); - char *cmp2 = g_utf8_strcasefold(str2); + char *cmp1 = lc_utf8_strcasefold(str1); + char *cmp2 = lc_utf8_strcasefold(str2); int retval = strcmp(cmp1, cmp2); delete [] cmp1; delete [] cmp2; @@ -507,7 +448,7 @@ glong *items_written, GError **error) */ -char_t *lc_ucs4_to_utf8 (const uchar_t *str, int len) +char_t *lc_ucs4_to_utf8 (const cl_uchar_t *str, int len) { int result_length; char *result = NULL; --- clucene-0.8.13/src/CLucene/LuceneUnix.h 2005-01-22 05:27:14.000000000 -0700 +++ clucene-0.8.13.new/src/CLucene/LuceneUnix.h 2005-03-18 12:34:17.000000000 -0700 @@ -16,7 +16,7 @@ # include "config.h" #endif -typedef unsigned long long ulong_t; +typedef unsigned long long cl_ulong_t; typedef long long long_t; typedef int INT; @@ -41,7 +41,7 @@ #ifdef _UNICODE -# define uchar_t wchar_t +# define cl_uchar_t wchar_t # define Cmd_Stat wstat # define Struct_Stat wstat # define stringToIntegerBase strtoll @@ -56,31 +56,11 @@ # define stringLower strlwr # define unlinkFile unlink #ifdef UTF8 - typedef unsigned long uchar_t; - #define stringICompare lc_utf8_stricmp - #undef toLower - #undef isSpace - #undef isDigit - #undef isAlNum - #define toLower lc_unichar_tolower - #define isSpace lc_utf32_isspace - #define isDigit lc_utf32_isdigit - #define isAlNum lc_utf32_isalnum - int lc_utf8_stricmp( const char * str1, const char * str2 ); - LPSTR lc_utf8_strcasefold( char * str1 ); - int lc_unichar_to_utf8 (uchar_t c, char *outbuf); - bool lc_utf32_isletter(uchar_t c); - bool lc_utf32_isalnum(uchar_t c); - bool lc_utf32_isdigit(uchar_t c); - bool lc_utf32_isspace(uchar_t c); - uchar_t lc_utf8_get_char (const char *p, int *len); - char * lc_ucs4_to_utf8 (const uchar_t *str, int len); - uchar_t lc_unichar_tolower (uchar_t c); - extern const char * const lc_utf8_skip; - #define lc_utf8_next_char(p) (char *)((p) + lc_utf8_skip[*(unsigned char *)(p)]) +#include "LuceneUTF8.h" + #else - #define uchar_t char_t + #define cl_uchar_t char_t #define stringICompare strcasecmp // I know this will cause Unicode // issues but for now this will do. #endif --- clucene-0.8.13/src/CLucene/LuceneWindows.h 2004-06-29 01:24:06.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/LuceneWindows.h 2005-03-18 12:34:17.000000000 -0700 @@ -15,17 +15,17 @@ #ifdef LLONG_MIN -# define ulong_t unsigned long long +# define cl_ulong_t unsigned long long # define long_t long long #else -# define ulong_t unsigned __int64 +# define cl_ulong_t unsigned __int64 # define long_t __int64 #endif # define processSleep _sleep # define PATH_DELIMITER _T("\\") # define Struct_Stat _stat -# define uchar_t char_t +# define cl_uchar_t char_t # ifdef _EXPORT_SYMBOLS # define EXPORT_LUCENE __declspec(dllexport) --- clucene-0.8.13/src/CLucene/queryParser/Lexer.cpp 2004-12-17 04:44:38.000000000 -0700 +++ clucene-0.8.13.new/src/CLucene/queryParser/Lexer.cpp 2005-03-18 12:34:26.000000000 -0700 @@ -100,7 +100,7 @@ { while(!reader->Eos()) { - uchar_t ch = reader->GetNext(); + cl_uchar_t ch = reader->GetNext(); // skipping whitespaces if( isSpace(ch)!=0 ) @@ -159,7 +159,7 @@ } // Reads an integer number - const char_t* Lexer::ReadIntegerNumber(const uchar_t ch) + const char_t* Lexer::ReadIntegerNumber(const cl_uchar_t ch) { StringBuffer number; number.append(ch); //TODO: check this @@ -172,9 +172,9 @@ #ifndef NO_RANGE_QUERY // Reads an inclusive range like [some words] - QueryToken* Lexer::ReadInclusiveRange(const uchar_t prev) + QueryToken* Lexer::ReadInclusiveRange(const cl_uchar_t prev) { - uchar_t ch = prev; + cl_uchar_t ch = prev; StringBuffer range; range.append(ch); @@ -194,9 +194,9 @@ } // Reads an exclusive range like {some words} - QueryToken* Lexer::ReadExclusiveRange(const uchar_t prev) + QueryToken* Lexer::ReadExclusiveRange(const cl_uchar_t prev) { - uchar_t ch = prev; + cl_uchar_t ch = prev; StringBuffer range; range.append(ch); @@ -217,9 +217,9 @@ #endif // Reads quoted string like "something else" - QueryToken* Lexer::ReadQuoted(const uchar_t prev) + QueryToken* Lexer::ReadQuoted(const cl_uchar_t prev) { - uchar_t ch = prev; + cl_uchar_t ch = prev; StringBuffer quoted; quoted.append(ch); @@ -238,9 +238,9 @@ return NULL; } - QueryToken* Lexer::ReadTerm(const uchar_t prev) + QueryToken* Lexer::ReadTerm(const cl_uchar_t prev) { - char_t ch = prev; + cl_uchar_t ch = prev; bool completed = false; int_t asteriskCount = 0; bool hasQuestion = false; @@ -261,11 +261,11 @@ #ifndef NO_WILDCARD_QUERY case '*': asteriskCount++; - val.append(ch); + val.append((const cl_uchar_t)ch); break; case '?': hasQuestion = true; - val.append(ch); + val.append((const cl_uchar_t)ch); break; #endif case '\n': @@ -288,12 +288,12 @@ #ifndef NO_FUZZY_QUERY case '~': // create new QueryToken - reader->UnGet(); + reader->UnGet(ch); completed = true; break; #endif default: - val.append(ch); + val.append((const cl_uchar_t)ch); break; } // end of switch @@ -342,9 +342,9 @@ } - const char_t* Lexer::ReadEscape(const uchar_t prev) + const char_t* Lexer::ReadEscape(const cl_uchar_t prev) { - uchar_t ch = prev; + cl_uchar_t ch = prev; StringBuffer val; val.append(ch); --- clucene-0.8.13/src/CLucene/queryParser/Lexer.h 2004-12-17 04:47:28.000000000 -0700 +++ clucene-0.8.13.new/src/CLucene/queryParser/Lexer.h 2005-03-18 12:34:18.000000000 -0700 @@ -38,23 +38,23 @@ QueryToken* GetNextToken(); // Reads an integer number - const char_t* ReadIntegerNumber(const uchar_t ch); + const char_t* ReadIntegerNumber(const cl_uchar_t ch); #ifndef NO_RANGE_QUERY // Reads an inclusive range like [some words] - QueryToken* ReadInclusiveRange(const uchar_t prev); + QueryToken* ReadInclusiveRange(const cl_uchar_t prev); // Reads an exclusive range like {some words} - QueryToken* ReadExclusiveRange(const uchar_t prev); + QueryToken* ReadExclusiveRange(const cl_uchar_t prev); #endif // Reads quoted string like "something else" - QueryToken* ReadQuoted(const uchar_t prev); + QueryToken* ReadQuoted(const cl_uchar_t prev); - QueryToken* ReadTerm(const uchar_t prev); + QueryToken* ReadTerm(const cl_uchar_t prev); - const char_t* ReadEscape(const uchar_t prev); + const char_t* ReadEscape(const cl_uchar_t prev); }; }} #endif --- clucene-0.8.13/src/CLucene/store/OutputStream.cpp 2004-04-24 15:43:47.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/store/OutputStream.cpp 2005-03-18 12:34:28.000000000 -0700 @@ -73,7 +73,7 @@ void OutputStream::writeVLong(const long_t vi) { //TODO: FIX THIS!!!! - ulong_t i = vi; + cl_ulong_t i = vi; while ((i & ~0x7F) != 0) { writeByte((l_byte_t)((i & 0x7f) | 0x80)); i >>= 7; //TODO: check if this is correct (i >>>= 7;) --- clucene-0.8.13/src/CLucene/util/FastCharStream.cpp 2004-04-24 15:43:47.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/util/FastCharStream.cpp 2005-03-18 12:34:28.000000000 -0700 @@ -15,7 +15,7 @@ } //Returns the next char_t from the stream. - uchar_t FastCharStream::GetNext() { + cl_uchar_t FastCharStream::GetNext() { /* WDG: UTF8 Reader.readChar will throw if it tries to read past the end so no need to do it twice */ #ifndef UTF8 @@ -32,7 +32,7 @@ return '\0'; } #endif - uchar_t ch = input.readChar(); + cl_uchar_t ch = input.readChar(); col = input.position()+1; if(ch == '\n') @@ -44,15 +44,22 @@ return ch; } - void FastCharStream::UnGet(){ + void FastCharStream::UnGet(cl_uchar_t ch){ if ( input.position() == 0 ) _THROWC("error : FileReader.UnGet : ungetted first char_t"); - input.seek(input.position()-1); + int ch_len = 1; + +#ifdef UTF8 + //make sure we unget the correct number of bytes -- the whole character! + ch_len = UTF8_LENGTH(ch); +#endif + + input.seek(input.position()-ch_len); } //Returns the current top char_t from the input stream without removing it. - uchar_t FastCharStream::Peek(){ + cl_uchar_t FastCharStream::Peek(){ try{ return input.peek(); }catch(...){} --- clucene-0.8.13/src/CLucene/util/FastCharStream.h 2004-04-24 15:43:47.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/util/FastCharStream.h 2005-03-18 12:34:21.000000000 -0700 @@ -20,12 +20,12 @@ FastCharStream(Reader& reader); //Returns the next char_t from the stream. - uchar_t GetNext(); + cl_uchar_t GetNext(); - void UnGet(); + void UnGet(cl_uchar_t ch); //Returns the current top char_t from the input stream without removing it. - uchar_t Peek(); + cl_uchar_t Peek(); //Returns True if the end of stream was reached. --- clucene-0.8.13/src/CLucene/util/Misc.cpp 2004-09-06 12:40:45.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/util/Misc.cpp 2005-03-18 12:34:28.000000000 -0700 @@ -71,7 +71,7 @@ //static - ulong_t Misc::currentTimeMillis() { + cl_ulong_t Misc::currentTimeMillis() { /* DSR:2004.06.11: Use gettimeofday instead of ftime, which is ** a) deprecated in general and b) not present at all in BSD's libc (only ** in libcompat). */ @@ -81,12 +81,12 @@ _THROWC("Error in gettimeofday call."); } - return (((ulong_t) tstruct.tv_sec) * 1000) + tstruct.tv_usec / 1000; + return (((cl_ulong_t) tstruct.tv_sec) * 1000) + tstruct.tv_usec / 1000; #else struct _timeb tstruct; _ftime(&tstruct); /* MS docs say _ftime doesn't return error code */ - return (((ulong_t) tstruct.time) * 1000) + tstruct.millitm; + return (((cl_ulong_t) tstruct.time) * 1000) + tstruct.millitm; #endif } --- clucene-0.8.13/src/CLucene/util/Misc.h 2004-07-03 21:42:27.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/util/Misc.h 2005-03-18 12:34:21.000000000 -0700 @@ -9,7 +9,7 @@ class Misc{ public: - static ulong_t currentTimeMillis(); + static cl_ulong_t currentTimeMillis(); static const char_t* replace_all( const char_t* val, const char_t* srch, const char_t* repl ); static bool dir_Exists(const char_t* path); --- clucene-0.8.13/src/CLucene/util/Reader.cpp 2004-05-28 20:31:07.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/util/Reader.cpp 2005-03-18 12:34:28.000000000 -0700 @@ -40,12 +40,12 @@ int_t FileReader::available(){ return stream->Length() - stream->getFilePointer(); } - uchar_t FileReader::readChar(){ + cl_uchar_t FileReader::readChar(){ #ifdef UTF8 #if 0 char_t buf[6]; int len=0; - uchar_t ret; + cl_uchar_t ret; int avail = available(); avail = (avail>=6 ? 6 : avail); if ( read(buf,0,avail) == avail ) { @@ -75,7 +75,7 @@ } int len=0; //get the char at current cachepos and set stream - uchar_t ret = lc_utf8_get_char(cachepos, &len); + cl_uchar_t ret = lc_utf8_get_char(cachepos, &len); if (len==-1) { throw "warning : FileReader::readChar : Read bad UTF-8 char."; @@ -94,13 +94,13 @@ return 0; #endif } - uchar_t FileReader::peek(){ + cl_uchar_t FileReader::peek(){ if ( available() == 0 ) return 0; #ifdef UTF8 char_t buf[6]; int len=0; - uchar_t ret; + cl_uchar_t ret; int avail = (available()>=6 ? 6 : available()); if ( read(buf,0,avail) == avail ) { ret = lc_utf8_get_char(buf, &len); @@ -112,7 +112,7 @@ else return 0; #else - uchar_t ret = readChar(); + cl_uchar_t ret = readChar(); stream->seek(stream->getFilePointer()-1); return ret; #endif @@ -164,7 +164,7 @@ } return rd; } - uchar_t StringReader::readChar(){ + cl_uchar_t StringReader::readChar(){ if ( pt>=len ) { if (pt==len) @@ -175,7 +175,7 @@ #ifdef UTF8 int length; //printf("StringReader reading from %d/%d)\n", pt, len);fflush(NULL); - uchar_t ret = lc_utf8_get_char(data+pt, &length); + cl_uchar_t ret = lc_utf8_get_char(data+pt, &length); //printf("StringReader read %d from %s(%d)\n", ret, data+pt, length);fflush(NULL); pt+=length; #else @@ -185,7 +185,7 @@ return ret; } - uchar_t StringReader::peek(){ + cl_uchar_t StringReader::peek(){ if ( pt>=len ) { if (pt==len) @@ -195,7 +195,7 @@ } #ifdef UTF8 int length=0; - uchar_t ret = lc_utf8_get_char(data+pt, &length); + cl_uchar_t ret = lc_utf8_get_char(data+pt, &length); //printf("StringReader peeked %d\n", ret);fflush(NULL); return ret; #else --- clucene-0.8.13/src/CLucene/util/Reader.h 2004-08-14 00:12:30.000000000 -0600 +++ clucene-0.8.13.new/src/CLucene/util/Reader.h 2005-03-18 12:34:21.000000000 -0700 @@ -11,8 +11,8 @@ virtual int_t read(char_t* b, const int_t start, const int_t length) = 0; virtual int_t read(char_t* buf) = 0; virtual int_t available () = 0; - virtual uchar_t readChar() = 0; - virtual uchar_t peek() = 0; + virtual cl_uchar_t readChar() = 0; + virtual cl_uchar_t peek() = 0; virtual int_t position() = 0; virtual void seek(int_t position) = 0; virtual ~Reader(){ @@ -34,8 +34,8 @@ int_t read ( char_t* buf, const int_t start, const int_t length ); int_t available (); void close(); - uchar_t readChar(); - uchar_t peek(); + cl_uchar_t readChar(); + cl_uchar_t peek(); int_t position(); void seek(int_t position); }; @@ -54,8 +54,8 @@ int_t read ( char_t* buf ); int_t read ( char_t* buf, const int_t start, const int_t length ); int_t available (); - uchar_t readChar(); - uchar_t peek(); + cl_uchar_t readChar(); + cl_uchar_t peek(); void close(); int_t position(); void seek(int_t position); --- clucene-0.8.13/src/CLucene/util/StringBuffer.cpp 2004-11-25 03:33:13.000000000 -0700 +++ clucene-0.8.13.new/src/CLucene/util/StringBuffer.cpp 2005-03-18 12:34:28.000000000 -0700 @@ -78,7 +78,7 @@ buffer = new char_t[bufferLength]; } - void StringBuffer::append(const uchar_t character) { + void StringBuffer::append(const cl_uchar_t character) { //Func - Appends a single character //Pre - true //Post - The character has been appended to the string in the buffer @@ -136,6 +136,7 @@ len += appendedLength; } +/* void StringBuffer::append(const int_t value) { //Func - Appends an integer (after conversion to a character string) //Pre - true @@ -148,7 +149,7 @@ //Have the converted integer now stored in buf appended to the string in buffer append(buf); } - +*/ void StringBuffer::append(const double value, const int_t digits){ //Func - Appends a double (after conversion to a character string) //Pre - digits > 0. Indicates the minimum number of characters printed @@ -169,7 +170,7 @@ //Pre - character contains a character to be appended to the string in the buffer //Post - character has been appended to the string in buffer - append((const uchar_t) character); + append((const cl_uchar_t) character); } #endif --- clucene-0.8.13/src/CLucene/util/StringBuffer.h 2004-11-25 03:34:08.000000000 -0700 +++ clucene-0.8.13.new/src/CLucene/util/StringBuffer.h 2005-03-18 12:34:21.000000000 -0700 @@ -19,13 +19,13 @@ void clear(); //Appends a single character - void append(const uchar_t chr); + void append(const cl_uchar_t chr); //Appends a copy of the string value void append(const char_t* value); //Appends a copy of the string value void append(const char_t* value, const int_t appendedLength); //Appends an integer (after conversion to a character string) - void append(const int_t value); + //void append(const int_t value); //Appends a double (after conversion to a character string) void append(const double value, const int_t digits); --- clucene-0.8.13/src/CLucene/StdHeader.h 2004-12-15 09:10:24.000000000 -0700 +++ clucene-0.8.13.new/src/CLucene/StdHeader.h 2005-03-18 12:34:17.000000000 -0700 @@ -169,12 +169,16 @@ #define _T(x) x #endif // _T +#ifndef UTF8 // functions aliases #define isSpace(x) (((unsigned)x) < 0x100?isspace(x):0) #define isDigit(x) (((unsigned)x) < 0x100?isdigit(x):0) #define isAlNum(x) (((unsigned)x) < 0x100?isalnum(x):0) #define toLower(x) (((unsigned)x) < 0x80?tolower(x):x) - +#else +#include "LuceneUTF8.h" +#endif + char * lucenestrdup(const char *v); #define stringDuplicate lucenestrdup --- clucene-0.8.13/src/CLucene/index/FieldInfo.h 2004-11-29 14:24:21.000000000 -0700 +++ clucene-0.8.13.new/src/CLucene/index/FieldInfo.h 2005-03-18 12:34:17.000000000 -0700 @@ -41,4 +41,5 @@ }; }} #endif - \ No newline at end of file + + --- clucene-0.8.13/examples/Makefile.am 2004-04-16 04:03:05.000000000 -0600 +++ clucene-0.8.13.new/examples/Makefile.am 2005-03-18 12:29:38.000000000 -0700 @@ -1,4 +1,4 @@ ## Makefile.am -- Process this file with automake to produce Makefile.in AUTOMAKE_OPTIONS = foreign -SUBDIRS = demo util tests . \ No newline at end of file +SUBDIRS = demo util tests utf8_test . --- clucene-0.8.13/configure.ac 2004-04-20 04:18:15.000000000 -0600 +++ clucene-0.8.13.new/configure.ac 2005-03-18 12:31:53.000000000 -0700 @@ -19,6 +19,11 @@ dnl Configure libtool. AC_PROG_LIBTOOL +dnl Checks for library functions. +AC_SEARCH_LIBS([nanosleep], [rt], + [AC_DEFINE([HAVE_NANOSLEEP], [1], + [Define if you have the nanosleep function])]) + dnl option to use UTF-8 as internal 8-bit charset to support characters in Unicode™ AC_ARG_ENABLE(utf8, AC_HELP_STRING([--enable-utf8],[UTF-8 as internal 8-bit charset to support characters in Unicode™ (default=no)]), @@ -26,5 +31,5 @@ AM_CONDITIONAL(USEUTF8, test x$enable_utf8 = xyes) -AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile examples/demo/Makefile examples/tests/Makefile examples/util/Makefile wrappers/Makefile wrappers/dll/Makefile wrappers/dll/dlltest/Makefile]) +AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile examples/demo/Makefile examples/tests/Makefile examples/util/Makefile examples/utf8_test/Makefile wrappers/Makefile wrappers/dll/Makefile wrappers/dll/dlltest/Makefile]) AC_OUTPUT