久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

對mysql中的多個字段進行加權搜索的最佳方法?

Best way to do a weighted search over multiple fields in mysql?(對mysql中的多個字段進行加權搜索的最佳方法?)
本文介紹了對mysql中的多個字段進行加權搜索的最佳方法?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

這是我想要做的:

  • 將搜索主題與表格的多個字段進行匹配
  • 按字段的重要性和匹配的相關性(按該順序)對結果進行排序

例如:假設我有一個博客.然后有人搜索php".結果會這樣顯示:

Ex: let's assume I have a blog. Then someone searches for "php". The results would appear that way:

  • 首先,匹配字段title",按相關性排序
  • 然后,字段body"的匹配項也按相關性排序
  • 等等與指定的字段...

我實際上是用 PHP 中的一個類完成的,但它使用了很多聯合(很多!)并且隨著搜索主題的大小而增長.所以我擔心性能和 DOS 問題.有人知道這個嗎?

I actually did this with a class in PHP but it uses a lot of UNIONS (a lot!) and grows with the size of the search subject. So I'm worried about performance and DOS issues. Does anybody has a clue on this?

推薦答案

可能這種加權搜索/結果的方法適合您:

Probably this approach of doing a weighted search / results is suitable for you:

SELECT *,
    IF(
            `name` LIKE "searchterm%",  20, 
         IF(`name` LIKE "%searchterm%", 10, 0)
      )
      + IF(`description` LIKE "%searchterm%", 5,  0)
      + IF(`url`         LIKE "%searchterm%", 1,  0)
    AS `weight`
FROM `myTable`
WHERE (
    `name` LIKE "%searchterm%" 
    OR `description` LIKE "%searchterm%"
    OR `url`         LIKE "%searchterm%"
)
ORDER BY `weight` DESC
LIMIT 20

它使用一個選擇子查詢來提供排序結果的權重.在這種情況下搜索了三個字段,您可以指定每個字段的權重.它可能比聯合更便宜,并且可能是純 MySQL 中更快的方法之一.

It uses a select subquery to provide the weight for ordering the results. In this case three fields searched over, you can specify a weight per field. It's probably less expensive than unions and probably one of the faster ways in plain MySQL only.

如果您有更多的數據并需要更快地獲得結果,您可以考慮使用 Sphinx 或 Lucene 之類的東西.

If you've got more data and need results faster, you can consider using something like Sphinx or Lucene.

這篇關于對mysql中的多個字段進行加權搜索的最佳方法?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 個表)
How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 設置?)
Auto populate a select box using an array in PHP(使用 PHP 中的數組自動填充選擇框)
PHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 從 MSSQL-SELECT 產生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名稱 ASC)
主站蜘蛛池模板: 精品久久久久久亚洲综合网 | 免费午夜视频在线观看 | 欧美成年黄网站色视频 | 成人免费视频 | 黄a免费看| 狠狠操网站 | 亚洲在线免费观看 | 亚洲视频免费在线播放 | 欧美日韩1区 | 日韩国产免费 | 91免费观看视频 | 看av在线| 日韩中出 | 草久网| 免费人成在线观看网站 | 国产欧美日韩一区二区三区 | 国产精品久久久久久久久久 | 91看片在线观看 | 精品国产网| 日韩精品视频在线免费观看 | 精品国产久 | 精品自拍视频 | 久久国产欧美日韩精品 | 国产在线一区观看 | 91资源在线 | 久久国产精品免费 | 亚洲欧美日韩精品久久亚洲区 | 九九导航 | 国产视频福利在线观看 | 国产精品99久久久久久动医院 | 91麻豆精品国产91久久久更新资源速度超快 | 成人在线网 | 国产成人综合久久 | 在线一区| 亚洲精品一区二区三区 | 久久爱综合 | 久久国产激情视频 | av大片在线观看 | 日韩免费在线观看视频 | 国产婷婷精品 | 伊人狠狠|