`
sealbird
  • 浏览: 586510 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Clucene C++编码转换

阅读更多
Clucene C++编码转换
在做Clucene与lucene生成的Index文件相互兼容时,遇到了编码转换问题。它们的兼容性对于非英文的编码可能都会存在这样的问题,经过跟踪clucene程序,发现它用的是unicode编码方式储蓄,因此,要先把字符串或文件转换成unicode编码,然后再进行其它处理。

转换的具体代码如下(Linux与vc6.0测试通过):

#ifndef _UNIX
static inline int codepage(const char* code_page)
{
    return 936;//"GBK"
}
#endif
static inline int mb2wc(const char* code_page,/*in*/const char* in,int in_len,
  /*out*/wchar_t* out,int out_max)
{
#ifdef _UNIX
 size_t result;
 iconv_t env;
 env = iconv_open("WCHAR_T",code_page);
 result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
 iconv_close(env);
 return (int) result;
#else
 return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
#endif
}
static inline int wc2mb(const char* code_page,/*in*/const wchar_t* in,int in_len,
  /*out*/char* out,int out_max)
{
#ifdef _UNIX
 size_t result;
 iconv_t env;
 env = iconv_open(code_page,"WCHAR_T");
 result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
 iconv_close(env);
 return (int) result;
#else
 return ::WideCharToMultiByte(codepage(code_page),0,in,-1,out,out_max, NULL, NULL);
#endif  
}
void str_to_UnicodeChar(const char* strIn,TCHAR* &strOut){
 if(!strIn)
  return;
 int  i=  mb2wc("936",(char*)strIn, -1, NULL, 0);
 strOut = (TCHAR*)malloc(sizeof(TCHAR)*i);
 mb2wc("936",(char*)strIn, -1, strOut, i); 
}
void UnicodeChar_to_str(const TCHAR* strIn,char* &strOut){
 if(!strIn)
  return;
  
 int i = wc2mb("936",strIn,-1,NULL,0); 
 strOut = new char[i+1]; 
 wc2mb("936", strIn, -1, strOut, i);
 strOut[i] = 0;
}
void tchar_to_str(const const TCHAR* strIn ,char* &strOut){
 int i=0;
 if(!strIn)
  return ;
 strOut = new char[1024]; 
 
 while(*strIn) {
  strOut[i]=*strIn++;
  i++;
 }
 strOut[i]='\0';

} 
分享到:
评论

相关推荐

    CLucene源代码-Lucene的C++版本

    CLucene是Lucene的C++实现,为那些偏好或需要使用C++进行开发的程序员提供了在C++环境中构建全文搜索引擎的可能。Lucene是一个高性能、全文本搜索库,由Java编写,广泛应用于各种搜索引擎和信息检索系统。CLucene则...

    C++搜索引擎 CLucene源码

    **CLucene:C++中的全文搜索引擎** CLucene是一款基于C++的开源全文搜索引擎库,它是对Java版的Lucene的移植。Lucene以其高效、强大的文本处理能力在搜索领域享有盛誉,而CLucene则为那些希望在C++环境中利用Lucene...

    C++搜索引擎Clucene源码

    《C++搜索引擎Clucene源码解析》 在信息技术飞速发展的今天,搜索引擎已经成为了人们获取信息的重要工具。本文将深入探讨C++实现的全文搜索引擎——Clucene,通过对源码的剖析,来理解其核心概念、设计思想以及实现...

    CLucene

    2. **索引构建**:CLucene能够快速地将大量文本数据转换成倒排索引结构,这种结构便于高效地执行全文搜索。索引过程中可以配置多个字段,每个字段有不同的分析策略。 3. **搜索功能**:通过TermQuery、PhraseQuery、...

    clucene中文处理

    除了上述核心功能,"clucene中文处理"还可能涉及其他方面,如繁体字与简体字的兼容、拼音转换(方便用拼音进行搜索)以及对UTF-8编码的支持等。这些都需要对Clucene的源代码进行深入理解和修改。 总的来说,...

    搜索引擎 CLucene 源代码

    CLucene 是一个基于 C++ 的全文搜索引擎库,它是 Lucene 的 C++ 实现。Lucene 是 Java 语言开发的一个著名开源全文检索库,被广泛应用于各种项目中,提供了高效的文本检索和分析功能。CLucene 旨在为那些希望在 C++ ...

    clucene源码

    大名鼎鼎的clucene,是lucene的c++ 版; CLucene README ============== ------------------------------------------------------ CLucene is a C++ port of Lucene. It is a high-performance, full-featured ...

    luceneDemo_pure1aa_DEMO_clucene_

    Lucene是一个强大的全文搜索引擎库,主要用Java编写,但也有其C++版本——Clucene。本篇将详细探讨如何利用Clucene 0.9.21版本在Visual C++ 6.0(简称vc6)环境下进行开发和调试,希望能为你的开发工作提供实用的...

    CLucene结构文档

    CLucene类结构文档 内嵌源代码及各类关系图

    CLucene 最新源码

    4. **查询解析器(Query Parser)**:用户可以输入自然语言查询,查询解析器会将其转换为CLucene可以理解的查询表达式。 5. **搜索器(Searcher)**:负责执行查询,根据索引找到相关的文档,并按照相关性进行排序...

    Clucene库以及自己封装好的Clucene方法库

    Clucene库是一个开源的全文搜索引擎库,它是Lucene的C++版本,旨在为C++开发者提供高效、稳定的文本检索功能。Lucene是一个广泛使用的搜索引擎框架,由Java编写,而Clucene则是将其移植到了C++环境,保留了Lucene的...

    搜索引擎开源代码Clucene-core-0.9.21

    《Clucene-core-0.9.21:深入探索C++版搜索引擎开源代码》 Clucene-core-0.9.21是一款基于C++实现的开源搜索引擎库,它提供了类似于Java Lucene的功能,使得开发者能够方便地在C++环境中构建全文检索应用。这个...

    Clucene库以及自己封装的方法库(补充)——对应的头文件和.lib索引文件

    Clucene库是一个开源的全文搜索引擎库,它是Lucene的一个C++版本,旨在提供与Java Lucene相似的功能。在IT行业中,全文搜索引擎对于处理大量文本数据的检索和查询至关重要,尤其在内容管理和信息检索系统中应用广泛...

    clucene_32位

    《C++与CLucene搜索引擎引擎开发详解》 CLucene,作为一个开源的全文搜索引擎库,是C++编程语言中实现Lucene搜索技术的实现。本文将深入探讨CLucene的核心概念、安装配置过程以及如何利用它来构建高效能的全文检索...

    clucene-0.9.10.tar

    Clucene,这个名称是“C++ Lucene”的简称,是一款基于Java Lucene库的开源、跨平台的信息检索库,专门为C++开发者设计。标题中的"clucene-0.9.10.tar"表明我们讨论的是Clucene的一个特定版本——0.9.10,它以tar...

    clucene-core-2.3.3.4

    Clucene-core-2.3.3.4是一款基于C++的全文搜索引擎库,它是Lucene的C++版本。Lucene是Java语言实现的一个全文检索库,而Clucene则为那些更倾向于C++开发的用户提供了一个类似的解决方案。本文将详细介绍如何在Visual...

    clucene-core-2.3.3.4 cmake可生产vs2005工程

    1. **Clucene**:Clucene是一个C++实现的全文搜索引擎库,它是对Java的Lucene搜索引擎的移植,旨在提供高性能、可扩展的文本搜索功能。它支持索引和搜索大量文本数据,并且可以嵌入到各种C++应用程序中。 2. **...

    clucene2.3.3.4源码 windows下vs2013工程

    CLucene是一款开源的全文搜索引擎库,它基于C++编写,为开发者提供了一种高效、可扩展的全文检索解决方案。在本文中,我们将详细探讨如何在Windows操作系统上使用Visual Studio 2013来编译和理解CLucene 2.3.3.4版本...

    CLUCENE资料合集+代码源码

    这是我学CLUCENE时期整理出来的几个不错的资料,我觉得里面总有一款会适合你,而且你所需要知道的技术里面基本上都是涵盖的,所以可以当作教材或者参考手册使用。(里面有CLUCENE,可以用的)

Global site tag (gtag.js) - Google Analytics