Heim  >  Artikel  >  Backend-Entwicklung  >  Praktische Fälle und Projektanwendungen von Sphinx PHP

Praktische Fälle und Projektanwendungen von Sphinx PHP

WBOY
WBOYOriginal
2023-10-03 08:07:50708Durchsuche

Sphinx PHP 的实际案例与项目应用

Praktische Fälle und Projektanwendungen von Sphinx PHP

Einführung:
Im heutigen Internetzeitalter, mit dem explosionsartigen Wachstum des Informationsvolumens und der Diversifizierung der Benutzerbedürfnisse, sind Suchmaschinen für uns zu einer der wichtigsten Möglichkeiten geworden, das zu erhalten Informationen, die wir brauchen. Um diesem Bedarf gerecht zu werden, wurde die Volltextsuchmaschine Sphinx ins Leben gerufen. Die Verwendung von Sphinx in Kombination mit der PHP-Sprache ist auch bei vielen Projekten zur Wahl geworden.

In diesem Artikel werden konkrete Fälle und Projektanwendungen als Beispiele verwendet, um die Anwendung von Sphinx PHP in tatsächlichen Projekten vorzustellen. Zum besseren Verständnis werden den Lesern auch einige Codebeispiele zur Verfügung gestellt.

1. Fall 1: Artikelsuchfunktion

Angenommen, wir haben eine Nachrichten-Website und müssen eine effiziente Artikelsuchfunktion bereitstellen, damit Benutzer schnell interessante Artikel finden können. In diesem Fall verwenden wir Sphinx PHP zur Implementierung.

  1. Zuerst müssen wir Sphinx installieren. Dies kann durch Ausführen des Befehls sudo apt-get install sphinxsearch im Terminal erfolgen. sudo apt-get install sphinxsearch 来完成。
  2. 接下来,在搜索引擎配置文件中设置索引。我们可以创建一个名为 news.conf 的文件,并写入以下内容:
source news
{
    type            = mysql
    sql_host        = localhost
    sql_user        = username
    sql_pass        = password
    sql_db            = database
    sql_port        = 3306
    sql_query        = 
        SELECT article_id, article_title, article_content 
        FROM articles
    sql_attr_timestamp    = article_publish_time
}

index news_index
{
    source            = news
    path            = /var/lib/sphinxsearch/data/news
    docinfo        = extern
    mlock            = 0
    mlock_recs        = 0
    index_exact_words    = 1
    min_word_len        = 3
    charset_table        = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
    morphology        = stem_en
}

searchd
{
    listen            = 9312
    listen            = 9306:mysql41
    log            = /var/log/sphinxsearch/searchd.log
    query_log        = /var/log/sphinxsearch/query.log
    read_timeout        = 5
    max_children        = 30
    pid_file        = /var/run/sphinxsearch/searchd.pid
    seamless_rotate        = 1
    preopen_indexes        = 1
    unlink_old        = 1
    workers            = threads
    binlog_path        = /var/lib/sphinxsearch/data
}

在上述配置文件中,我们定义了一个数据源 news ,指定了连接数据库的相关信息以及需要索引的字段。然后,我们定义了一个名为 news_index 的索引,指定了索引文件的路径以及其他相关配置。

  1. 在代码中使用Sphinx PHP。我们可以使用Sphinx PHP的API来与Sphinx进行交互。以下是一个简单的示例代码:
<?php

require_once('sphinxapi.php');
$sphinx = new SphinxClient();
$sphinx->SetServer("localhost", 9312);

$keyword = $_GET['keyword']; // 从用户输入中获取关键词

$result = $sphinx->Query($keyword, 'news_index'); // 在索引中搜索关键词

if ($result && $result['total']) {
    foreach ($result['matches'] as $match) {
        echo "文章标题:" . $match['attrs']['article_title'] . "<br>";
        echo "文章内容:" . $match['attrs']['article_content'] . "<br><br>";
    }
} else {
    echo "没有找到相关文章";
}

?>

上述代码中,我们首先创建了一个SphinxClient对象,并设置连接服务器的相关信息。然后,我们从用户输入中获取关键词,并使用Sphinx的Query方法在索引中搜索相关文章。最后,我们从搜索结果中取出文章的标题和内容,并进行展示。

以上就是一个简单的使用Sphinx PHP实现文章搜索功能的案例。通过这种方式,我们可以快速地从大量文章中找到所需的内容。

二、案例二:商品全文搜索

在电商网站中,商品的全文搜索功能是必不可少的。在这个案例中,我们将使用Sphinx PHP来实现一个实时的商品搜索功能。

  1. 还是先安装Sphinx,同样使用命令 sudo apt-get install sphinxsearch 进行安装。
  2. 在搜索引擎配置文件中设置索引。我们可以创建一个名为 products.conf 的文件,并写入以下内容:
source products
{
    type            = mysql
    sql_host        = localhost
    sql_user        = username
    sql_pass        = password
    sql_db            = database
    sql_port        = 3306
    sql_query        = SELECT product_id, product_name, product_description FROM products
    sql_attr_uint    = product_price
}

index products_index
{
    source            = products
    path            = /var/lib/sphinxsearch/data/products
    docinfo        = extern
    mlock            = 0
    morphology        = stem_en
}

searchd
{
    listen            = 9312
    listen            = 9306:mysql41
    log            = /var/log/sphinxsearch/searchd.log
    query_log        = /var/log/sphinxsearch/query.log
    read_timeout        = 5
    max_children        = 30
    pid_file        = /var/run/sphinxsearch/searchd.pid
    seamless_rotate        = 1
    preopen_indexes        = 1
    unlink_old        = 1
    workers            = threads
    binlog_path        = /var/lib/sphinxsearch/data
}

在上述配置文件中,我们定义了一个数据源 products ,指定了连接数据库的相关信息以及需要索引的字段。然后,我们定义了一个名为 products_index

Als nächstes richten Sie die Indizierung in der Suchmaschinenkonfigurationsdatei ein. Wir können eine Datei mit dem Namen news.conf erstellen und den folgenden Inhalt schreiben:
  1. <?php
    
    require_once('sphinxapi.php');
    $sphinx = new SphinxClient();
    $sphinx->SetServer("localhost", 9312);
    
    $keyword = $_GET['keyword']; // 从用户输入中获取关键词
    
    $result = $sphinx->Query($keyword, 'products_index'); // 在索引中搜索关键词
    
    if ($result && $result['total']) {
        foreach ($result['matches'] as $match) {
            echo "商品名称:" . $match['attrs']['product_name'] . "<br>";
            echo "商品描述:" . $match['attrs']['product_description'] . "<br>";
            echo "商品价格:" . $match['attrs']['product_price'] . "<br><br>";
        }
    } else {
        echo "没有找到相关商品";
    }
    
    ?>
  2. In der obigen Konfigurationsdatei definieren wir eine Datenquelle news, die die relevanten Informationen angibt für die Verbindung zur Datenbank und den Feldern, die indiziert werden müssen. Anschließend definieren wir einen Index mit dem Namen news_index und geben den Pfad zur Indexdatei und andere zugehörige Konfigurationen an.

Verwenden Sie Sphinx PHP in Ihrem Code. Wir können die API von Sphinx PHP verwenden, um mit Sphinx zu interagieren. Das Folgende ist ein einfacher Beispielcode:


rrreee

Im obigen Code erstellen wir zunächst ein SphinxClient-Objekt und legen die relevanten Informationen fest, um eine Verbindung zum Server herzustellen. Anschließend erhalten wir die Schlüsselwörter aus der Benutzereingabe und verwenden die Query-Methode von Sphinx, um den Index nach relevanten Artikeln zu durchsuchen. Abschließend entnehmen wir den Titel und den Inhalt des Artikels den Suchergebnissen und zeigen diese an.

Das Obige ist ein einfacher Fall der Verwendung von Sphinx PHP zur Implementierung der Artikelsuchfunktion. Auf diese Weise können wir aus einer Vielzahl von Artikeln schnell das finden, was wir brauchen. 🎜🎜2. Fall 2: Produkt-Volltextsuche🎜🎜Bei E-Commerce-Websites ist die Produkt-Volltextsuche unerlässlich. In diesem Fall verwenden wir Sphinx PHP, um eine Produktsuchfunktion in Echtzeit zu implementieren. 🎜🎜🎜 Lassen Sie uns zuerst Sphinx installieren. Verwenden Sie auch den Befehl sudo apt-get install sphinxsearch, um es zu installieren. 🎜🎜Indizierung in Suchmaschinenkonfigurationsdateien festlegen. Wir können eine Datei mit dem Namen products.conf erstellen und den folgenden Inhalt schreiben: 🎜🎜rrreee🎜In der obigen Konfigurationsdatei definieren wir eine Datenquelle products, die die relevanten Informationen angibt für die Verbindung zur Datenbank und den Feldern, die indiziert werden müssen. Anschließend definieren wir einen Index mit dem Namen products_index und geben den Pfad zur Indexdatei und andere zugehörige Konfigurationen an. 🎜🎜🎜Verwenden Sie Sphinx PHP in Ihrem Code. Hier ist ein einfacher Beispielcode: 🎜🎜rrreee🎜Der obige Code ähnelt der Artikelsuchfunktion, außer dass die Feldnamen unterschiedlich sind. Wir können im Index auch anhand der vom Benutzer eingegebenen Schlüsselwörter nach verwandten Produkten suchen und die Suchergebnisse anzeigen. 🎜🎜Fazit: 🎜Durch die Einführung der oben genannten Fälle können wir die Anwendung von Sphinx PHP in tatsächlichen Projekten sehen. Durch die Kombination der PHP-Sprache und der Sphinx-Volltextsuchmaschine können wir effiziente Artikelsuch- und Produktsuchfunktionen erreichen. Ob es sich um eine Nachrichten-Website oder eine E-Commerce-Website handelt, Sie können davon profitieren. 🎜🎜Natürlich verfügt Sphinx über viele weitere Funktionen und Anwendungsszenarien, wie Sortieren, Paginieren, Filtern usw. Ich hoffe, dass die Beispiele in diesem Artikel die Leser inspirieren und zu mehr Kreativität und Ideen anregen können. 🎜

Das obige ist der detaillierte Inhalt vonPraktische Fälle und Projektanwendungen von Sphinx PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn