PHP 및 coreseek 기반 뉴스 추천 엔진 구축
소개:
인터넷의 급속한 발전과 함께 사람들이 일상적으로 정보를 얻는 방식도 변화하고 있습니다. 사용자가 자신의 관심사에 맞는 뉴스 콘텐츠를 필터링하도록 빠르고 정확하게 지원하는 방법이 중요한 과제가 되었습니다. 이 기사에서는 PHP와 coreseek를 사용하여 키워드 매칭을 기반으로 하는 뉴스 추천 엔진을 구축하는 방법을 소개합니다.
뉴스 추천 엔진의 아키텍처는 아래 그림에 나와 있습니다.
사용자--> 추천 엔진--> coreseek --> 사용자가 뉴스 키워드 및 추천을 제출합니다. 추천 엔진을 통해 엔진은 키워드를 coreseek에 전달하고, coreseek은 인덱스 라이브러리를 통해 일치하는 뉴스를 쿼리하여 추천 엔진에 반환합니다. 추천 엔진은 반환된 뉴스 목록을 정렬 및 필터링하고 결과를 사용자에게 반환합니다.
coreseek 설치 및 구성wget http://www.coreseek.cn/uploads/csft/4.1/coreseek-4.1-beta.tar.gz tar -zxvf coreseek-4.1-beta.tar.gz cd coreseek-4.1-beta ./configure --prefix=/usr/local/coreseek make && make install cd /usr/local/coreseek cp -r /usr/local/coreseek/mmseg-3.2.14/etc/* ./etc/ vi etc/csft.conf
csft.conf
구성 파일에서 호스트 이름, 포트 등 뉴스 데이터베이스의 연결 정보를 설정해야 합니다. 번호 등
데이터베이스 및 데이터 가져오기csft.conf
配置文件中,我们需要设置新闻数据库的连接信息,如主机名、端口号等。
接下来,我们需要创建一个新闻数据库,并导入新闻数据。假设我们使用MySQL作为数据库管理系统,可以通过以下命令创建数据库和表:
CREATE DATABASE news; USE news; CREATE TABLE news ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255), content TEXT );
然后,将新闻数据导入数据库:
INSERT INTO news (title, content) VALUES ('新闻标题1', '新闻内容1'); INSERT INTO news (title, content) VALUES ('新闻标题2', '新闻内容2'); ...
将所有新闻数据导入数据库之后,我们需要设置coreseek的索引配置文件etc/sphinx.conf
:
source news { type = mysql sql_host = localhost sql_user = your_mysql_user sql_pass = your_mysql_password sql_db = news sql_port = 3306 sql_query = SELECT id, title, content FROM news } index news_index { source = news path = /usr/local/coreseek/var/data/news_index docinfo = extern mlock = 0 }
以下是一个简单的PHP代码示例,用于提交用户关键词并获取新闻推荐结果:
<?php $keyword = $_GET['keyword']; $sphinx = new SphinxClient(); $sphinx->SetServer('localhost', 9312); $sphinx->SetMatchMode(SPH_MATCH_ALL); $sphinx->SetLimits(0, 10); $result = $sphinx->Query($keyword, 'news_index'); if ($result === false) { echo "查询失败"; } else { $ids = array_keys($result['matches']); $news = []; $pdo = new PDO('mysql:host=localhost;dbname=news', 'your_mysql_user', 'your_mysql_password'); $stmt = $pdo->prepare("SELECT title, content FROM news WHERE id IN (" . implode(',', $ids) . ")"); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $news[] = $row; } echo json_encode($news); } ?>
在这个示例中,我们使用了sphinxapi扩展库提供的SphinxClient类来与coreseek进行查询。首先,我们通过SetServer
方法设置coreseek的主机名和端口号,然后使用SetMatchMode
方法设置匹配模式(这里是全部匹配),最后通过Query
方法提交用户关键词进行查询。
如果查询成功,我们可以通过$result['matches']
모든 뉴스 데이터를 데이터베이스로 가져온 후, coreseek etc/sphinx.conf
의 인덱스 구성 파일을 설정해야 합니다:
SetServer
메서드를 통해 coreseek의 호스트 이름과 포트 번호를 설정한 다음 SetMatchMode
메서드를 사용하여 일치 모드를 설정하고(여기서는 모두 일치합니다) 마지막으로 Query
를 사용하세요. code> 메소드는 쿼리를 위해 사용자 키워드를 제출합니다. 🎜🎜쿼리가 성공하면 $result['matches']
를 통해 일치하는 뉴스 ID 목록을 얻은 다음 PDO 클래스를 사용하여 MySQL과 상호 작용하여 해당 뉴스 제목과 콘텐츠를 쿼리할 수 있습니다. 아이디를 기준으로 합니다. 🎜🎜🎜결론🎜🎜🎜위의 단계를 통해 우리는 PHP와 coreseek 기반의 뉴스 추천 엔진을 성공적으로 구축했습니다. 사용자 로그인, 개인화 추천 등의 기능을 추가하는 등 본인의 필요에 따라 2차 개발을 수행할 수 있습니다. 이 글이 여러분의 뉴스 추천 엔진 구축에 도움이 되기를 바랍니다! 🎜위 내용은 PHP와 coreseek를 기반으로 뉴스 추천 엔진 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!