c語言網路引擎搜索,c++搜索引擎

本文目錄一覽:

c語言索引搜索如何建立索引表?

#include cstdlib

#include cstdio

#include iostream

#include cmath

#include cstring

#include algorithm

#include stdlib.h

#include direct.h

#include string.h

#include io.h

#include stdio.h

#include iostream

#include windows.h

#include time.h

using namespace std;

FILE *p;

void md(long long int m)

{

long long int shi,fen,miao,hmiao; 

hmiao=m%3600000;

m=m/1000;

if(m/360024)

{

shi = m/3600;

fen = m/60%60;

miao = m%60;

coutendl”換算等於”shi”時:”fen”分:”miao”秒:”(hmiao-miao*1000)”毫秒”endl;

else printf(“輸入數值太大”); 

}

class CBrowseDir

{

protected:

char m_szInitDir[_MAX_PATH];

public:

CBrowseDir();

bool SetInitDir(const char *dir);

bool BeginBrowse(const char *filespec);

protected:

bool BrowseDir(const char *dir,const char *filespec);

virtual bool ProcessFile(const char *filename);

virtual void ProcessDir(const char *currentdir,const char *parentdir);

};

CBrowseDir::CBrowseDir()

{

getcwd(m_szInitDir,_MAX_PATH);

int len=strlen(m_szInitDir);

if (m_szInitDir[len-1] != ‘\\’)

strcat(m_szInitDir,”\\”);

}

bool CBrowseDir::SetInitDir(const char *dir)

{

if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL)

return false;

if (_chdir(m_szInitDir) != 0)

return false;

int len=strlen(m_szInitDir);

if (m_szInitDir[len-1] != ‘\\’)

strcat(m_szInitDir,”\\”);

return true;

}

bool CBrowseDir::BeginBrowse(const char *filespec)

{

ProcessDir(m_szInitDir,NULL);

return BrowseDir(m_szInitDir,filespec);

}

bool CBrowseDir::BrowseDir(const char *dir,const char *filespec)

{

_chdir(dir);

long hFile;

_finddata_t fileinfo;

if ((hFile=_findfirst(filespec,fileinfo)) != -1)

{

do

{

if (!(fileinfo.attrib  _A_SUBDIR))

{

char filename[_MAX_PATH];

strcpy(filename,dir);

strcat(filename,fileinfo.name);

puts(filename);

fputs(filename,p); 

fprintf(p,”\n”); 

if (!ProcessFile(filename))

return false;

}

} while (_findnext(hFile,fileinfo) == 0);

_findclose(hFile);

}

_chdir(dir);

if ((hFile=_findfirst(“*.*”,fileinfo)) != -1)

{

do

{

if ((fileinfo.attrib  _A_SUBDIR))

{

if (strcmp(fileinfo.name,”.”) != 0  strcmp

(fileinfo.name,”..”) != 0)

{

char subdir[_MAX_PATH];

strcpy(subdir,dir);

strcat(subdir,fileinfo.name);

strcat(subdir,”\\”);

ProcessDir(subdir,dir);

if (!BrowseDir(subdir,filespec))

return false;

}

}

} while (_findnext(hFile,fileinfo) == 0);

_findclose(hFile);

}

return true;

}

bool CBrowseDir::ProcessFile(const char *filename)

{

return true;

}

void CBrowseDir::ProcessDir(const char 

*currentdir,const char *parentdir)

{

}

class CStatDir:public CBrowseDir

{

protected:

long long int m_nFileCount;   

long long int m_nSubdirCount; 

public:

CStatDir()

{

m_nFileCount=m_nSubdirCount=0;

}

int GetFileCount()

{

return m_nFileCount;

}

int GetSubdirCount()

{

return m_nSubdirCount-1;

}

protected:

virtual bool ProcessFile(const char *filename)

{

m_nFileCount++;

return CBrowseDir::ProcessFile(filename);

}

virtual void ProcessDir

(const char *currentdir,const char *parentdir)

{

m_nSubdirCount++;

CBrowseDir::ProcessDir(currentdir,parentdir);

}

};

int main()

{

int DiskCount = 0;

DWORD DiskInfo = GetLogicalDrives();

while(DiskInfo)

{

if(DiskInfo1)

{

++DiskCount;

}

DiskInfo = DiskInfo  1;

}

cout”邏輯磁碟數量:”DiskCountendl;

int DSLength = GetLogicalDriveStrings(0,NULL);

char* DStr = new char[DSLength];

GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);

int DType;

int si=0;

BOOL fResult;

unsigned long long int i64FreeBytesToCaller;

unsigned long long intTotalBytes;

unsigned long long int i64FreeBytes;

unsigned long long int i64TotalBytes;

int g=0,k=0;

char name[100];

for(int i=0; iDSLength/4; ++i)

{

char dir[5]= {DStr[si],’:’,’\\’};

coutdir;

DType = GetDriveType(DStr+i*4);

if(DType == DRIVE_FIXED)

{

cout”硬碟”;

name[k]=DStr[si];

k++;

g++;

}

else if(DType == DRIVE_CDROM)

{

cout”光碟機”;

}

else if(DType == DRIVE_REMOVABLE)

{

cout”可移動式磁碟”;

}

else if(DType == DRIVE_REMOTE)

{

cout”網路磁碟”;

}

else if(DType == DRIVE_RAMDISK)

{

cout”虛擬RAM磁碟”;

}

else if (DType == DRIVE_UNKNOWN)

{

cout”未知設備”;

}

fResult = GetDiskFreeSpaceEx (dir,(PULARGE_INTEGER)i64FreeBytesToCaller,(PULARGE_INTEGER)i64TotalBytes,(PULARGE_INTEGER)i64FreeBytes);

if(fResult)

{

if((i64TotalBytes/1024/1024)1024)

  cout” 磁碟大小:”(float)i64TotalBytes/1024/1024/1024″ GB”;

 else

   cout” 磁碟大小:”(float)i64TotalBytes/1024/1024″ MB”;

if((i64FreeBytesToCaller/1024/1024)1024)

  cout” 剩餘空間:”(float)i64FreeBytesToCaller/1024/1024/1024″ GB”;

 else

   cout” 剩餘空間:”(float)i64FreeBytesToCaller/1024/1024″ MB”;

}

else

{

cout” 設備未準備好或啟用了系統加密!”;

}

if(!fResult)

  {

   k–;

  }

coutendl;

si+=4;

}

cout”共有硬碟”g”塊”endl;

g=k+1;

cout”共有未加密的硬碟”g”塊”endl;

cout”正在啟動索引程序”endl; 

int i;

p=fopen(“list.txt”,”a+”);

if(g==1)

  {

   cout”您只有一個c盤”endl;

   cout”檢測C盤可能會讓程序崩潰”endl;

  } 

clock_t start,finish;

    start=clock();

for(i=1;ig;i++)

   {

    fprintf(p,”%c盤內的文件如下\n”,name[i]);

char buf[6] = {name[i],’:’,’\\’};

    CStatDir statdir;

statdir.SetInitDir(buf);

        statdir.BeginBrowse(“*.*”);

        fprintf(p,”文件總數: %d\n子目錄總數:%d\n”,statdir.GetFileCount(),statdir.GetSubdirCount());

        printf(“文件總數: %d\n子目錄總數:%d\n”,statdir.GetFileCount(),statdir.GetSubdirCount());

   }

cout”全部完成”endl;

finish=clock();

cout”用時”(finish-start)”毫秒”;

md(finish-start); 

return 0;

}

C語言編寫的小型的搜索引擎

建議你先讀懂lucene的源代碼後再動手寫。而且,最好用php、perl之類的腳本語言,處理字元串比較方便,c語言的話比較麻煩點。

C語言如何用函數來實現搜索

#include stdio.h

int search(int a[],int b,int c,int i)

{

    int x,y,z;

    x=i+1;

    z=b-1;

    y=(x+z)/2;

    while(x=z)

    {

        if(a[y]c)

        {

            z=y-1;

            y=(x+z)/2;

            continue;

        }

        if(a[y]c)

        {

            x=y+1;

            y=(x+z)/2;

            continue;

        }

        return y+1;

    }

    return -1;

}

int main()

{

    int i,m,pos;

    scanf(“%d”,m);

    int a[m];

    for(i=0;im;i++)

    {

        scanf(“%d”,a[i]);

    }

    for(i=0;im;i++)

    {

        pos=search(a,m,a[i],i);

        if(pos!=-1)

        {

            printf(“FOUND a[%d]=%d, position is %d\n”,i,a[i],i+1);

            return 0;

        }

    }

    if(pos==-1)

    {

        printf(“NOT FOUND\n”);

    }

    return 0;

}

這種查找方法的數組必須是從小到大的,用遍歷的話就沒這個問題了。

全文檢索工具有哪些?

1. Lucene

Lucene的開發語言是Java,也是Java家族中最為出名的一個開源搜索引擎,在Java世界中已經是標準的全文檢索程序,它提供了完整的查詢引擎和索引引擎,沒有中文分詞引擎,需要自己去實現,因此用Lucene去做一個搜素引擎需要自己去架構.另外它不支持實時搜索,但linkedin和twitter有分別對Lucene改進的實時搜素. 其中Lucene有一個C++移植版本叫CLucene,CLucene因為使用C++編寫,所以理論上要比lucene快.

2. Sphinx

Sphinx是一個用C++語言寫的開源搜索引擎,也是現在比較主流的搜索引擎之一,在建立索引的事件方面比Lucene快50%,但是索引文件比Lucene要大一倍,因此Sphinx在索引的建立方面是空間換取事件的策略,在檢索速度上,和lucene相差不大,但檢索精準度方面Lucene要優於Sphinx,另外在加入中文分詞引擎難度方面,Lucene要優於Sphinx.其中Sphinx支持實時搜索,使用起來比較簡單方便.

3. Xapian

Xapian是一個用C++編寫的全文檢索程序,它的api和檢索原理和lucene在很多方面都很相似,算是填補了lucene在C++中的一個空缺.

4. Nutch

Nutch是一個用java實現的開源的web搜索引擎,包括爬蟲crawler,索引引擎,查詢引擎. 其中Nutch是基於Lucene的,Lucene為Nutch提供了文本索引和搜索的API.

對於應該使用Lucene還是使用Nutch,應該是如果你不需要抓取數據的話,應該使用Lucene,最常見的應用是:你有數據源,需要為這些數據提供一個搜索頁面,在這種情況下,最好的方式是直接從資料庫中取出數據,並用Lucene API建立索引.

5. DataparkSearch

DataparkSearch是一個用C語言實現的開源的搜索引擎. 其中網頁排序是採用神經網路模型. 其中支持HTTP,HTTPS,FTP,NNTP等下載網頁.包括索引引擎,檢索引擎和中文分詞引擎(這個也是唯一的一個開源的搜索引擎里有中文分詞引擎).能個性化定製搜索結果,擁有完整的日誌記錄.

6. Zettair

Zettair是根據Justin Zobel的研究成果為基礎的全文檢索實驗系統.它是用C語言實現的. 其中Justin Zobel在全文檢索領域很有名氣,是業界第一個系統提出倒排序索引差分壓縮演算法的人,倒排列表的壓縮大大提高了檢索和載入的性能,同時空間膨脹率也縮小到相當優秀的水平. 由於Zettair是源於學術界,代碼是由RMIT University的搜索引擎組織寫的,因此它的代碼簡潔精鍊,演算法高效,是學習倒排索引經典演算法的非常好的實例. 其中支持linux,windows,mac os等系統.

7. Indri

Indri是一個用C語言和C++語言寫的全文檢索引擎系統,是由University of Massachusetts和Carnegie Mellon University合作推出的一個開源項目. 特點是跨平台,API介面支持Java,PHP,C++.

來自網路。

有什麼軟體可以搜索大學C語言題目的啊?

大學c語言搜題app。大學c語言搜題app原名叫做菜鳥學C語言是一款非常好用的學習c語言的手機軟體

軟體功能

1、選擇題:按照考點分類的選擇題習題,並有答案解析。

2、錯題庫:可自動加練習過程中錯題加入收藏,以便反覆練習。

3、上機操作題:300道上機操作題,程序填空題、程序修改題、程序設計題。

軟體優勢

1、選擇題:按照考點分類的選擇題習題,並有答案解析。

2、上級操作題:300道上機操作題,程序填空題、程序修改題、程序設計題。

3、最新押題:最新考試押題3套。

4、考點匯總:包含複習的考點。

5、錯題庫:可自動加練習過程中錯題加入收藏,以便反覆練習。

6、收藏夾:可在練習過程中自行收錄題目到收藏夾,形成自己的小題庫,針對性練習,提高通過率。

軟體特色

1、隨時隨地都能夠學習,而且還支持下載保存你學習內容離線繼續學習。

2、同學們能夠直接通過搜索引擎來查詢尋找你感興趣對你內容。

3、解答問題的辦法非常多,可以選擇通過拍照來答題,也可以選擇輸入題目來解答。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254325.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-14 17:41
下一篇 2024-12-14 17:41

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Java2D物理引擎簡介及應用

    本文將介紹Java2D物理引擎的基本概念、實現原理及應用案例,以及對應代碼示例。 一、物理引擎概述 物理引擎是一種計算機程序,用於模擬物理系統中的對象和其互動,如重力、碰撞、彈力等…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • 使用Netzob進行網路協議分析

    Netzob是一款開源的網路協議分析工具。它提供了一套完整的協議分析框架,可以支持多種數據格式的解析和可視化,方便用戶對協議數據進行分析和定製。本文將從多個方面對Netzob進行詳…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • 微軟發布的網路操作系統

    微軟發布的網路操作系統指的是Windows Server操作系統及其相關產品,它們被廣泛應用於企業級雲計算、資料庫管理、虛擬化、網路安全等領域。下面將從多個方面對微軟發布的網路操作…

    編程 2025-04-28

發表回復

登錄後才能評論