第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 php 中搜索類(lèi)似 google 的數(shù)據(jù)庫(kù)

如何在 php 中搜索類(lèi)似 google 的數(shù)據(jù)庫(kù)

PHP
慕慕森 2023-03-04 17:46:25
您好,我想在我的網(wǎng)站中實(shí)現(xiàn)我自己的搜索功能,并且我想以所有可能的方式向用戶(hù)顯示結(jié)果。我目前正在使用這個(gè)查詢(xún)$rs = $conn->query("SELECT * FROM search_engine WHERE soundex(keyword) LIKE soundex('%$q%') UNION SELECT * FROM search_engine WHERE title LIKE '%$q%' OR link LIKE '%$q%' ORDER BY `clicks` DESC");我知道這個(gè)查詢(xún)不好。此查詢(xún)僅在參數(shù)與標(biāo)題、關(guān)鍵字或鏈接匹配時(shí)顯示結(jié)果,例如,當(dāng)我搜索Extract all url from sitemap.xml with PHP CURL查詢(xún)時(shí),我得到了結(jié)果,但是當(dāng)我嘗試此查詢(xún)時(shí),How to Extract all url from sitemap.xml with PHP CURL我無(wú)法獲得任何結(jié)果,所以我該怎么做才能進(jìn)行搜索功能強(qiáng)大。
查看完整描述

1 回答

?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

我建立搜索引擎。

我將為您提供 6 個(gè)探索技巧,以便您可以繼續(xù)學(xué)習(xí)如何編程并在需要時(shí)繼續(xù)進(jìn)行。

提示#1:專(zhuān)注!

首先定義你想要完成的事情。在嘗試從頭開(kāi)始構(gòu)建搜索引擎之前,想想你真正想做什么。這可能不是您的最終目標(biāo),也就是您真正想做的事情。

你真的想用這個(gè)想法爬網(wǎng)嗎:“使用 PHP CURL 從 sitemap.xml 中提取所有 url”?

或者您只是想在您的網(wǎng)站上添加一個(gè)搜索框,從您的產(chǎn)品數(shù)據(jù)庫(kù)中獲取產(chǎn)品數(shù)據(jù)并在您的網(wǎng)站上顯示該產(chǎn)品數(shù)據(jù),想法是:“我想在我的網(wǎng)站中實(shí)現(xiàn)我自己的搜索功能”?

這很難說(shuō)。

如果您想向您的網(wǎng)站添加基于產(chǎn)品的“搜索功能”,則無(wú)需從XML 站點(diǎn)地圖中提取內(nèi)容。您只需從以下數(shù)據(jù)庫(kù)中檢索它:MySQL、PosgreSQL、Oracle、SQL Server等...,然后將結(jié)果顯示在您的搜索結(jié)果頁(yè)面上。當(dāng)人們想在他們的網(wǎng)站中添加“搜索功能”時(shí),這通常是人們想要做的。

提示#2:對(duì)于搜索,越簡(jiǎn)單越快。

在編寫(xiě)代碼時(shí)最好記住這一點(diǎn):簡(jiǎn)單永遠(yuǎn)贏。它被稱(chēng)為“SAW 原理”。

首先,讓我們看看您的 SQL。它有 2 個(gè) select 語(yǔ)句,用關(guān)鍵字連接在一起UNION

SELECT * FROM search_engine

WHERE soundex(keyword) LIKE soundex('%$q%') 

UNION 

    SELECT * FROM search_engine 

    WHERE title LIKE '%$q%' OR link LIKE '%$q%'

ORDER BY `clicks` DESC

由于這看起來(lái)像是來(lái)自同一個(gè)數(shù)據(jù)庫(kù)表,因此您可以按如下方式組合它......其中更改替換UNION SELECT * FROM search_engine WHERE為OR:


SELECT * FROM search_engine

WHERE soundex(keyword) LIKE soundex('%$q%') 

OR title LIKE '%$q%' OR link LIKE '%$q%'

ORDER BY `clicks` DESC

因此,如果您可以刪除 UNION 關(guān)鍵字并將 2 個(gè) select 語(yǔ)句合并為 1 個(gè) select 語(yǔ)句,那么數(shù)據(jù)庫(kù)引擎可以做更少的工作來(lái)完成搜索查詢(xún)請(qǐng)求。

如果您使用 2 個(gè)不同的表,那么您需要做一些功課來(lái)查找稱(chēng)為倒排索引的概念。概念是一樣的:讓搜索盡可能簡(jiǎn)單……讓數(shù)據(jù)庫(kù)服務(wù)器做盡可能少的工作……讓搜索體驗(yàn)運(yùn)行得盡可能快!

盡管更簡(jiǎn)單意味著更快,但并不意味著更準(zhǔn)確。

提示#3:準(zhǔn)確性使搜索引擎與用戶(hù)更相關(guān)。將此視為準(zhǔn)確性 =“強(qiáng)大”。

讓我們看看這些頁(yè)面標(biāo)題以及搜索查詢(xún)?nèi)绾闻c它們一起使用:

  1. 使用 PHP CURL 從 sitemap.xml 中提取所有 url

  2. 如何使用 PHP CURL 從 sitemap.xml 中提取所有 url

為了使這些結(jié)果準(zhǔn)確匹配,您必須在數(shù)據(jù)庫(kù)中包含第二頁(yè)的完整標(biāo)題。如果您只有第一頁(yè)的標(biāo)題(沒(méi)有“如何”),那么對(duì)第二頁(yè)標(biāo)題的查詢(xún)將找不到第一頁(yè)標(biāo)題的結(jié)果。這就是您在網(wǎng)站的搜索功能中注意到的問(wèn)題。

原因是對(duì)第一頁(yè)標(biāo)題的查詢(xún)是第二頁(yè)標(biāo)題內(nèi)的部分完全匹配。然而,對(duì)第二頁(yè)標(biāo)題的查詢(xún)不是完全匹配,甚至也不是第一頁(yè)標(biāo)題的部分匹配。

為了解決這個(gè)問(wèn)題,搜索引擎以關(guān)鍵字為基礎(chǔ)工作。

提示 #4:了解關(guān)鍵字與停用詞以及如何在搜索查詢(xún)中解析它們。

在搜索查詢(xún)中,既有稱(chēng)為關(guān)鍵字的相關(guān)關(guān)鍵字,也有稱(chēng)為停用詞的不相關(guān)垃圾詞。您可能想研究停用詞的概念以及搜索引擎如何使用它們,或者最常見(jiàn)的是,在實(shí)際執(zhí)行搜索查詢(xún)之前將它們丟棄。

因此,在您的查詢(xún)中,這些是您獨(dú)特且有意義的關(guān)鍵字。當(dāng)您單獨(dú)考慮每個(gè)詞時(shí),它們具有獨(dú)立的具體含義。

array('extract', 'url', 'sitemap.xml', 'PHP', 'CURL')

具體含義:

  • Extract = 拉、抓住、從一組中抓取某物。

  • URL = 超鏈接。

  • sitemap.xml = XML 站點(diǎn)地圖文件。

  • PHP = 編程語(yǔ)言名稱(chēng)。

  • CURL = 命令行 URL 提取。

這些很可能是停用詞,它們本身沒(méi)有意義或含義模糊。

array('How', 'to', 'all', 'from', 'with');

含糊的意思:

  • How = 問(wèn)題的簡(jiǎn)單引導(dǎo)。那么搜索引擎用這個(gè)做什么呢?它把它扔掉了。

  • To = 連接詞。它指向一組東西。也許有用。也許不會(huì)。扔了它。

  • 全部 = 一組所有的東西??赡苡杏?,但對(duì)搜索引擎來(lái)說(shuō)似乎很模糊。扔了它。

  • From = 另一個(gè)連接詞。它指向一組其他東西。又是含糊不清。扔了它。

  • 有=包括。另一個(gè)連接詞。也很模糊。計(jì)算機(jī)不知道在 with 關(guān)鍵字后添加“PHP”或“PHP CURL”。無(wú)賴(lài)!扔了它。

搜索引擎通常會(huì)去除停用詞并查詢(xún)有意義的關(guān)鍵字以獲得結(jié)果。相關(guān)性得分是搜索結(jié)果的準(zhǔn)確程度。

這是一個(gè)假設(shè)的例子(我在寫(xiě)這篇文章時(shí)憑空想出來(lái)的):如果一個(gè)查詢(xún)發(fā)現(xiàn)一個(gè)頁(yè)面包含 5 個(gè)唯一關(guān)鍵字中的 1 個(gè),那么相關(guān)性得分將為 20%。如果它找到一個(gè)包含 5 個(gè)唯一關(guān)鍵字中的 4 個(gè)的頁(yè)面,則相關(guān)性分?jǐn)?shù)將為 80%。這是假設(shè)的,因?yàn)檫@不是任何特定搜索引擎當(dāng)前的工作方式。它只是一個(gè)基本概念,用一個(gè)簡(jiǎn)單的例子來(lái)解釋一個(gè)觀點(diǎn)。

相關(guān)性算法和分?jǐn)?shù)實(shí)際上取決于搜索引擎設(shè)計(jì)者/構(gòu)建者來(lái)創(chuàng)建。相關(guān)性算法可以像搜索引擎設(shè)計(jì)者和/或構(gòu)建者想要的那樣簡(jiǎn)單或復(fù)雜。搜索引擎開(kāi)發(fā)人員可能會(huì)花費(fèi)大量時(shí)間來(lái)微調(diào)相關(guān)性算法和評(píng)分。它還取決于所使用的搜索算法以及搜索機(jī)器人為這些算法找到數(shù)據(jù)的效果。

提示 #5:探索構(gòu)建搜索機(jī)器人!

如果你真的想完成這個(gè),你應(yīng)該考慮構(gòu)建搜索機(jī)器人:“使用 PHP CURL 從 sitemap.xml 中提取所有 url”。

我也寫(xiě)了一個(gè)搜索機(jī)器人。它已經(jīng)抓取了超過(guò) 100 萬(wàn)個(gè) URL!

PHP Curl 不是提取鏈接的工具。這是從 1 個(gè) URL 獲取內(nèi)容的原因。必須編寫(xiě)搜索機(jī)器人來(lái)解析返回的 HTML,以便它可以找出從這些搜索結(jié)果中提取的內(nèi)容。

只是一個(gè)警告:人們不會(huì)在他們的 URL 中編寫(xiě)完美的 HTML 語(yǔ)法。因此,您的搜索機(jī)器人需要進(jìn)行大量微調(diào)才能檢測(cè)草率的編程,這會(huì)使您的搜索機(jī)器人崩潰。這是一個(gè)巨大的時(shí)間承諾!如果您決定繼續(xù)構(gòu)建自己的搜索機(jī)器人,請(qǐng)準(zhǔn)備好在這個(gè)項(xiàng)目上花費(fèi)數(shù)年甚至數(shù)十年。構(gòu)建搜索引擎是一個(gè)漫長(zhǎng)的旅程!您的搜索機(jī)器人將崩潰數(shù)百至數(shù)千次,然后您才能讓它抓取數(shù)百萬(wàn)個(gè) URL。

所以...您真的要“從 sitemap.xml 中提取所有 url”還是要查詢(xún)駐留在數(shù)據(jù)庫(kù)中的以前上傳的產(chǎn)品數(shù)據(jù)列表?后一種數(shù)據(jù)庫(kù)查詢(xún)的想法構(gòu)建起來(lái)要快得多,而且將來(lái)更容易維護(hù)!

提示 #6:如果您不想花很多時(shí)間從頭開(kāi)始構(gòu)建搜索引擎,從頭開(kāi)始構(gòu)建搜索機(jī)器人,從頭開(kāi)始構(gòu)建相關(guān)性評(píng)分算法,那么請(qǐng)查看一些預(yù)構(gòu)建的搜索引擎解決方案。這里有一些流行的。和他們一起玩會(huì)很有趣!

  1. 彈性搜索

  2. Lucene

  3. 太陽(yáng)能

結(jié)論:搜索引擎不容易建立!他們可能需要數(shù)年時(shí)間才能建成。如果您真的想實(shí)現(xiàn)這個(gè)目標(biāo):“我想以所有可能的方式向用戶(hù)展示結(jié)果”,請(qǐng)準(zhǔn)備好投入大量時(shí)間(很簡(jiǎn)單是幾個(gè)月,實(shí)際上是幾年,可能是幾十年)。


查看完整回答
反對(duì) 回復(fù) 2023-03-04
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)