>백엔드 개발 >PHP 문제 >PHP에서 사이트 검색을 구현하는 방법

PHP에서 사이트 검색을 구현하는 방법

藏色散人
藏色散人원래의
2020-09-30 09:21:334202검색

PHP에서 현장 검색을 구현하는 방법: 1. SQL LIKE를 사용하여 현장 검색을 구현합니다. 2. Google 검색 엔진 API 및 Google 검색 기능을 사용하여 현장 검색을 설정합니다. 3. "PHP+MYSQL+를 사용합니다. SCWS'를 현장 검색엔진으로 활용하고 있습니다.

PHP에서 사이트 검색을 구현하는 방법

추천: "PHP 비디오 튜토리얼"

PHP+MYSQL+SCWS 나만의 현장 검색 엔진 만들기

전 세계에 이런 현장 검색 엔진이 있는데 중국어를 지원합니다. 단어 분할 및 전체 텍스트 검색에는 서버에 대한 확장이나 설정이 필요하지 않으며 PHP 및 MYSQL만 지원하면 됩니다. 이는 PHP+MYSQL+SCWS 현장 검색 엔진입니다.

사실 Sina부터 Aika Automotive Network까지, 일일 PV가 1억 개가 넘는 웹사이트부터 개인 블로그까지, 모두 현장 검색 엔진의 역할이 필요합니다. 가장 직접적인 기능은 사용자가 다른 사람의 웹사이트를 검색하기 위해 Baidu나 Google에 가는 대신 귀하의 웹사이트에서 원하는 것을 가장 직접적이고 가장 빠른 방법으로 찾을 수 있도록 하는 것입니다.

( 1) 가장 기본적인 현장 검색은 SQL의 LIKE를 사용합니다.

예를 들어

SELECT * FROM bbs_threads WHERE subject LIKE '%搜索引擎%' LIMIT 10

장점: 너무 쉬워서 누구나 할 수 있습니다

단점: 1. LIKE 문이 실행될 때마다 문자열을 사용하여 테이블 순회가 필요합니다. 2. 단어분할은 불가능하고, 단어분할만 가능하며, 검색어가 길 경우 단어분할 기능을 추가하면 검색결과가 거의 나오지 않습니다. 한 문장에 여러 개의 LIKE를 사용하는 것과 동일합니다. 1.

(2) Google 맞춤 검색

Google 검색 엔진 API와 Google의 강력한 검색 기능을 사용하여 자신만의 현장 검색 기능을 구축하세요: http://www. .lusongsong.com/search.html?cx=014724041144905348996:pf5fnahnzuw&cof=FORID:11&ie=UTF-8&q=crisis&sa=search &siteurl=lusongsong.com/

장점: 걱정할 필요가 없습니다. 이보다 더 걱정할 필요가 없습니다. 걱정할 필요가 없습니다. Google은 자체 검색 알고리즘을 보유하고 있으므로 어떻게 비교할 수 있습니까?

단점: 1. IFRAME을 사용하거나 Google 페이지를 직접 열거나 더 복잡한 API를 사용해야 합니다. 2. 텍스트로만 검색할 수 있고, 전체 사이트만 검색할 수 있습니다. 특정 채널에서 검색하고 싶습니다. Google에서는 특정 유형의 기사에 대한 요구 사항을 구현할 수 없습니다. 3. 귀하의 웹사이트가 작다면 Google은 귀하를 포함하지 않으며 아무것도 찾을 수 없습니다. 어떻게 해야 할까요?

(3) Lucene은 세계 최고의 오픈 소스 검색 엔진입니다

글쎄... 아무것도 없습니다. 소개하자면, 장점과 단점만 살펴보겠습니다

장점: 완전 오픈 소스 코드, 완전 사용자 정의 가능, 완전...

단점: java로 작성 네, 대신 Java를 아시나요?

(4) PHP+MYSQL+SCWS 나만의 현장 검색 엔진 만들기

오랫동안 기다려왔습니다!

MySQL은 전체 텍스트 인덱싱 및 검색을 지원합니다. MySQL의 전체 텍스트 인덱스는 FULLTEXT 유형 인덱스입니다. FULLTEXT 인덱스는 MyISAM 테이블에서 사용되며 CREATE TABLE 시 또는 ALTER TABLE 또는 CREATE INDEX 사용 후 CHAR, VARCHAR 또는 TEXT 열에 생성될 수 있습니다.

함수 MATCH()는 텍스트 세트(FULLTEXT 인덱스에 하나 이상의 열을 포함하는 열 세트)에 대해 문자열에 대한 자연어 검색을 수행합니다. 검색 문자열은 AGAINST()에 인수로 제공됩니다. 대소문자를 무시하고 검색됩니다. 테이블의 각 레코드 행에 대해 MATCH()는 상관 값을 반환합니다. 즉, 검색 문자열과 MATCH() 목록에 지정된 열에 있는 레코드 행 텍스트 간의 유사성을 측정한 것입니다.

WHERE 절에 MATCH()를 사용하면 반환된 행은 관련성이 높은 항목에서 낮은 항목 순으로 자동 정렬됩니다. 상관 값은 음수가 아닌 부동 소수점 숫자입니다. 상관관계가 0이면 유사성이 없음을 의미합니다.

영어 환경에서는 PHP 및 MYSQL을 사용하여 전체 텍스트 검색 환경을 구축하는 것이 완전히 가능합니다.

1 콘텐츠 테이블을 만들고, 데이터를 채우고, 해당 필드에 FULLTEXT 인덱스를 만듭니다. 전체 텍스트 검색 필요

2. MATCH 함수 실행 검색 조건 사용

3. 반환된 데이터를 처리하고 결과를 표시합니다

간단합니다. . .

문제는 중국어가 자체 분할 언어가 아니라는 것입니다. MYSQL에서는 중국어의 많은 부분이 단지 한 단어이므로 전체 텍스트 검색이 효과적이지 않습니다. 이 문제를 해결하는 방법은 삽입하기 전에 다른 도구를 사용하는 것입니다. 데이터 및 검색을 수행하고 중국어의 큰 단락을 영어 단어와 유사하게 하나씩 단어로 분리합니다. 공식 사이트: http://www.ftphp.com/scws/

SCWS Simple Chinese Words Segmentation의 약자로 간단한 중국어 단어 분할 시스템입니다.

이것은 단어 빈도 사전을 기반으로 한 기계식 중국어 단어 분할 엔진으로, 기본적으로 한자의 전체 단락을 단어로 정확하게 분할할 수 있습니다. 단어는 중국어의 기본 형태소 단위로, 영어와 달리 단어를 공백으로 구분하기 때문에 중국어 단어 분할에서는 단어를 정확하고 빠르게 분할하는 것이 항상 어려운 문제였습니다.

SCWS 在概念上并无创新成分,采用的是自行采集的词频词典,并辅以一定程度上的专有名称、人名、地名、数字年代等规则集,经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些中小型搜索引擎、关键字提取等场合运用。 SCWS 采用纯 C 代码开发,以 Unix-Like OS 为主要平台环境,提供共享函数库,方便植入各种现有软件系统。此外它支持 GBK,UTF-8,BIG5 等汉字编码,切词效率高。

SCWS提供了纯PHP代码编写的中文分词类,使它不需要做任何额外的扩展就能在机会所有的服务器上使用.

支持中文的基于PHP+MYSQL的全文检索的步骤为:

1. 建立内容表(,将数据分词),灌入数据,在需要全文检索的字段上建立FULLTEXT索引

2. (将要搜索的内容先分词再) 利用MATCH函数执行搜索条件

3. 处理返回的数据,显示结果

仍然是SO EASY!

一个演示的例子: http://www.bnet.com.cn/files/search.php?word=%CA%D5%B9%BA&page=3

执行搜索的语句是:

SELECT SQL_CALC_FOUND_ROWS *, MATCH (titlewords, keywords, author, contentwords) AGAINST ('$words') AS matchscore
FROM search
WHERE MATCH (titlewords, keywords, author, contentwords) AGAINST ('$words') > 0.5

위 내용은 PHP에서 사이트 검색을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.