首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

基於 MySQL 全文檢索打造搜尋引擎:C 語言實現與 WCF 服務整合

     編輯:MySQL 資料庫相關知識

從資料庫到全文搜尋服務的完整實作

利用 MySQL 5.6+ InnoDB 原生 Fulltext 索引,結合 C 語言高效處理、WCF 提供 RESTful API、jQuery UI 前端自動完成,構建一個輕量級搜尋引擎原型。

資料庫設計

CREATE TABLE `document` (
  `DocumentID` INT(11) NOT NULL AUTO_INCREMENT,
  `Title` VARCHAR(255) DEFAULT NULL,
  `Text` TEXT,
  PRIMARY KEY (`DocumentID`),
  FULLTEXT KEY `ft` (`Title`,`Text`),
  FULLTEXT KEY `ftTitle` (`Title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

兩個全文索引分別用於內容搜尋 (`ft`) 與標題自動完成 (`ftTitle`)。

C 語言 DLL 核心邏輯

  • 使用 `mysql.h` C API 連線、查詢。
  • Unicode 處理:內部用 UTF-16 (TCHAR),轉 UTF-8 與 MySQL 交互 (`MultiByteToWideChar`/`WideCharToMultiByte`,Codepage 850/CP_UTF8)。
  • 布爾模式查詢:`MATCH(col) AGAINST('keyword*' IN BOOLEAN MODE)` 支援通配符 `*`。
  • 結果序列化為 JSON 格式,供前端 AJAX 解析。

關鍵函數 `GetDocuments`

__declspec(dllexport) TCHAR* __cdecl GetDocuments(TCHAR* search, int format, int forAutocomplete);
  • `format`: 0=純文字, 1=JSON。
  • `forAutocomplete`: 1=僅搜尋標題回傳標題陣列。

WCF 服務封裝

[ServiceContract] public interface IVisionService {
  [OperationContract, WebInvoke(Method="POST", BodyStyle=WebMessageBodyStyle.WrappedRequest, RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)]
  string GetDocuments(string search, int format, int forautocomplete);
}
public class VisionService : IVisionService {
  [DllImport("VisionDAL.dll", CharSet=CharSet.Unicode)] static extern string GetDocuments(string search, int format, int forAutocomplete);
  public string GetDocuments(string search, int format, int forautocomplete) => GetDocuments(search, format, forautocomplete);
}

`webHttpBinding` + `webHttp` 行為啟用 REST/JSON 端點。

前端頁面

  • 引用 jQuery + jQuery UI Autocomplete。
  • `$.ajax` POST 請求 WCF,`JSON.parse` 解析回傳 JSON。
  • 搜尋結果渲染為 HTML 表格;自動完成來源動態呼叫 `GetAutocomplete` 填充陣列。
  • Enter 鍵觸發搜尋並關閉下拉選單。

部署要點

  1. IIS 應用程式池設為 .NET 4.0 整合模式。
  2. 將 `VisionDAL.dll`、`libmysql.dll` 放入系統 PATH 或網站 `bin` 目錄並解決鎖定問題。
  3. 專案屬性設為 x64 平台對應 64 位 MySQL Client Library。
  4. 配置 `VisionConfiguration.txt` 資料庫連線資訊。

總結: 此架構展示了 MySQL Fulltext + Native C + WCF + jQuery 的跨語言整合路徑,適合中小型全文檢索場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved