首頁  >  文章  >  後端開發  >  使用PHP和Manticore Search開發即時搜尋建議功能

使用PHP和Manticore Search開發即時搜尋建議功能

王林
王林原創
2023-08-06 17:09:071194瀏覽

使用PHP和Manticore Search開發即時搜尋建議功能

引言:
在現代網路應用中,即時搜尋建議功能已經變得非常常見。當使用者在搜尋框中輸入關鍵字時,系統能夠自動提示相關的搜尋建議,使用戶更方便地找到自己想要的內容。本文將介紹如何使用PHP和Manticore Search開發即時搜尋建議功能。

一、什麼是Manticore Search?
Manticore Search是一種開源的全文搜尋引擎,它是基於Sphinx開發而來。 Manticore Search提供了高效能的全文搜尋和分頁功能,並且支援即時索引更新。在本文中,我們將利用Manticore Search來實現即時搜尋建議功能。

二、準備工作
在開始開發之前,我們需要先安裝Manticore Search和PHP擴充sphinx。具體安裝步驟可以參考Manticore Search官方文件。

三、建立Manticore Search索引
首先,我們需要建立一個Manticore Search索引,用於儲存我們的搜尋建議資料。這裡我們假設我們要搜尋的是用戶的姓名。

  1. 建立索引設定檔
    首先,在Manticore Search的設定檔夾中建立一個新的設定檔suggest.conf,輸入以下內容:
source suggest
{
    type = mysql
    sql_host = localhost
    sql_user = your_username
    sql_pass = your_password
    sql_db = your_database
    sql_port = 3306
    sql_query_pre = SET NAMES utf8
    sql_query = 
        SELECT name, weight() AS weight 
        FROM users
}

index suggest_index
{
    source = suggest
    path = /path/to/suggest_index
    morphology = none
    min_infix_len = 1
}

這裡需要修改對應的資料庫連線資訊和路徑。

  1. 建立索引
    執行以下指令建立索引:
$ indexer --config suggest.conf --all --rotate

四、寫PHP程式碼
接下來,我們需要寫PHP程式碼來實作即時搜尋建議的功能。

  1. 連接Manticore Search
    首先,在PHP程式碼中,我們需要連接到Manticore Search。我們可以使用sphinxapi擴充功能來實現:
<?php
$host = 'localhost';
$port = 9306;
$index = 'suggest_index';

$cl = new SphinxClient();
$cl->SetServer($host, $port);
$cl->SetConnectTimeout(1); // 设置连接超时时间
$cl->SetArrayResult(true); // 将结果转换为数组
  1. 處理使用者輸入
    接下來,我們需要取得使用者在搜尋框中輸入的關鍵字,並將其傳遞給Manticore Search進行搜尋。我們可以使用GET或POST方法來取得使用者輸入:
<?php
$input = $_GET['q']; // 获取用户输入的关键字
  1. 進行搜尋
    利用Manticore Search進行搜索,並取得搜尋結果:
<?php
$res = $cl->Query($input, $index);
  1. 輸出搜尋建議
    將搜尋結果處理成搜尋建議,並以JSON格式輸出到前端:
<?php
$data = [];

if ($res && $res['total']) {
    foreach ($res['matches'] as $match) {
        $data[] = ['name' => $match['attrs']['name']];
    }
}

echo json_encode($data);

五、前端程式碼
最後,我們需要寫前端程式碼來向PHP後端發送請求並接收搜尋建議結果。

  1. HTML程式碼
<!DOCTYPE html>
<html>
<head>
    <title>实时搜索建议</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
    <input type="text" id="search-input" placeholder="请输入搜索关键字">
    <ul id="search-suggestions"></ul>

    <script>
        $(function() {
            var timer;

            $('#search-input').on('input', function() {
                clearTimeout(timer);

                var query = $(this).val();

                timer = setTimeout(function() {
                    $.get('suggest.php', { q: query }, function(data) {
                        var suggestions = '';

                        $.each(data, function(_, item) {
                            suggestions += '<li>' + item.name + '</li>';
                        });

                        $('#search-suggestions').html(suggestions);
                    });
                }, 300);
            });
        });
    </script>
</body>
</html>

#六、總結
透過使用PHP和Manticore Search,我們可以很方便地實作即時搜尋建議功能。這可以提升用戶的搜尋體驗,幫助用戶更快找到所需內容。希望本文對你有幫助!

以上是使用PHP和Manticore Search開發即時搜尋建議功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn