mysql 相關搜索_MySQL單詞搜索相關度排名

一個單詞搜索的相關度排名,這個例子演示了一個單詞搜索的相關度排名計算。

mysql>?CREATE?TABLE?articles?(

->?id?INT?UNSIGNED?AUTO_INCREMENT?NOT?NULL?PRIMARY?KEY,

->?title?VARCHAR(200),

->?body?TEXT,

->?FULLTEXT?(title,body)

->?)?ENGINE=InnoDB;

Query?OK,?0?rows?affected?(0.56?sec)

mysql>?INSERT?INTO?articles?(title,body)?VALUES

->?('MySQL?Tutorial','This?database?tutorial?...'),

->?("How?To?Use?MySQL",'After?you?went?through?a?...'),

->?('Optimizing?Your?Database','In?this?database?tutorial?...'),

->?('MySQL?vs.?YourSQL','When?comparing?databases?...'),

->?('MySQL?Security','When?configured?properly,?MySQL?...'),

->?('Database,?Database,?Database','database?database?database'),

->?('1001?MySQL?Tricks','1.?Never?run?mysqld?as?root.?2.?...'),

->?('MySQL?Full-Text?Indexes',?'MySQL?fulltext?indexes?use?a?..');

Query?OK,?8?rows?affected?(0.02?sec)

Records:?8??Duplicates:?0??Warnings:?0

mysql>?SELECT?id,?title,?body,?MATCH?(title,body)?AGAINST?('database'?IN?BOOLEAN?MODE)?AS?score?FROM?articles?ORDER?BY?score?DESC;

+----+------------------------------+-------------------------------------+---------------------+

|?id?|?title????????????????????????|?body????????????????????????????????|?score???????????????|

+----+------------------------------+-------------------------------------+---------------------+

|??6?|?Database,?Database,?Database?|?database?database?database??????????|??1.0886961221694946?|

|??3?|?Optimizing?Your?Database?????|?In?this?database?tutorial?...???????|?0.36289870738983154?|

|??1?|?MySQL?Tutorial???????????????|?This?database?tutorial?...??????????|?0.18144935369491577?|

|??2?|?How?To?Use?MySQL?????????????|?After?you?went?through?a?...????????|???????????????????0?|

|??4?|?MySQL?vs.?YourSQL????????????|?When?comparing?databases?...????????|???????????????????0?|

|??5?|?MySQL?Security???????????????|?When?configured?properly,?MySQL?...?|???????????????????0?|

|??7?|?1001?MySQL?Tricks????????????|?1.?Never?run?mysqld?as?root.?2.?...?|???????????????????0?|

|??8?|?MySQL?Full-Text?Indexes??????|?MySQL?fulltext?indexes?use?a?..?????|???????????????????0?|

+----+------------------------------+-------------------------------------+---------------------+

8?rows?in?set?(0.00?sec)

總共有8條記錄,其中3條與數據庫搜索詞匹配。第一條記錄(id 6)包含搜索詞6次,相關度排名為1.0886961221694946。這個排名值計算使用TF的價值6(數據庫搜索詞出現6次記錄id 6)和IDF值為0.42596873216370745,計算如下(8是記錄的總數和3是包含搜索詞的記錄數量)

${IDF}?=?log10(?8?/?3?)?=?0.42596873216370745

mysql>?select?log10(?8?/?3?)?;

+---------------------+

|?log10(?8?/?3?)??????|

+---------------------+

|?0.42596873216370745?|

+---------------------+

1?row?in?set?(0.00?sec)

然后將TF和IDF值輸入到排名公式中

${rank}?=?${TF}?*?${IDF}?*?${IDF}

在MySQL命令行客戶端執行計算將返回一個排名值1.088696164686938。

mysql>?SELECT?6*log10(8/3)*log10(8/3);

+-------------------------+

|?6*log10(8/3)*log10(8/3)?|

+-------------------------+

|???????1.088696164686938?|

+-------------------------+

1?row?in?set?(0.00?sec)

您可能會注意到SELECT ... MATCH ... AGAINST語句和MySQL命令行客戶端所計算的排名值有差別(1.0886961221694946對1.088696164686938)。區別在于InnoDB內部是如何執行整數和浮點數/雙精度類型轉換的(以及相關的精度和四舍五的決定),以及它們在其他地方是如何執行的,比如在MySQL命令行客戶端或其他類型的計算器中。

多詞搜索的相關度排名

這個示例演示了基于前面示例中使用的articles表和數據計算多單詞全文搜索的相關度排名。

如果你搜索的是一個以上的單詞,那么相關度排名值就是每個單詞相關度排名值的總和,如下公式所示:

${rank}?=?${TF}?*?${IDF}?*?${IDF}?+?${TF}?*?${IDF}?*?${IDF}

執行兩個搜索詞('mysql tutorial')搜索將返回以下結果:

mysql>?SELECT?id,?title,?body,?MATCH?(title,body)?AGAINST?('mysql?tutorial'?IN?BOOLEAN?MODE)?AS?score?FROM?articles?ORDER?BY?score?DESC;

+----+------------------------------+-------------------------------------+----------------------+

|?id?|?title????????????????????????|?body????????????????????????????????|?score????????????????|

+----+------------------------------+-------------------------------------+----------------------+

|??1?|?MySQL?Tutorial???????????????|?This?database?tutorial?...??????????|???0.7405621409416199?|

|??3?|?Optimizing?Your?Database?????|?In?this?database?tutorial?...???????|???0.3624762296676636?|

|??5?|?MySQL?Security???????????????|?When?configured?properly,?MySQL?...?|?0.031219376251101494?|

|??8?|?MySQL?Full-Text?Indexes??????|?MySQL?fulltext?indexes?use?a?..?????|?0.031219376251101494?|

|??2?|?How?To?Use?MySQL?????????????|?After?you?went?through?a?...????????|?0.015609688125550747?|

|??4?|?MySQL?vs.?YourSQL????????????|?When?comparing?databases?...????????|?0.015609688125550747?|

|??7?|?1001?MySQL?Tricks????????????|?1.?Never?run?mysqld?as?root.?2.?...?|?0.015609688125550747?|

|??6?|?Database,?Database,?Database?|?database?database?database??????????|????????????????????0?|

+----+------------------------------+-------------------------------------+----------------------+

8?rows?in?set?(0.00?sec)

在第一條記錄(id 1)中,“mysql”出現一次,“tutorial”出現兩次。“mysql”有六條匹配記錄,“tutorial”有兩條匹配記錄。當將這些值插入到用于多個單詞搜索的排名公式中時,MySQL命令行客戶端返回預期的排名值

mysql>?SELECT?(1*log10(8/6)*log10(8/6))?+?(2*log10(8/2)*log10(8/2));

+-------------------------------------------------------+

|?(1*log10(8/6)*log10(8/6))?+?(2*log10(8/2)*log10(8/2))?|

+-------------------------------------------------------+

|????????????????????????????????????0.7405621541938003?|

+-------------------------------------------------------+

1?row?in?set?(0.00?sec)

與單個單詞搜索一樣,使用select ... match ... against語句和MySQL命令行工具執行的結果有差

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530328.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530328.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530328.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IDEA使用總結

idea中使用tomcat IntelliJ IDEA配置Tomcat(完整版圖文教程)_猿Bug的博客-CSDN博客_intellij tomcat配置 用上面的方式發現缺少文件,在edit configuration頁面選擇before lanuch前選擇Run maven goal package

mysql一直copying to tmp table_mysql提示Copying to tmp table on disk

網站運行的慢了,查找原因是Copying to tmp table on disk那怎么解決這個問題呢解決一例最近常常碰到網站慢的情況,登陸到后臺,查詢一下 /opt/mysql/bin/mysqladmin processlist;發現一個查詢狀態為: Copying to tmp table 而且此查…

idea cloud bootstrap是啥_application.yml與bootstrap.yml的區別

Spring Boot 默認支持 properties(.properties) 和 YAML(.yml .yaml ) 兩種格式的配置文件,yml 和 properties 文件都屬于配置文件,功能一樣。Spring Cloud 構建于 Spring Boot 之上,在 Spring Boot 中有兩種上下文,一種是 bootst…

python讀取日期_從文件中讀取日期和數據(Python)

我想從文件中讀取時間字符串和數據,但是當我使用loadtxt時,我不能同時讀取字符串和數字,因為字符串不是浮點型的。所以我嘗試使用genfromtxt并使用delimiter[][][]作為我所擁有的列,但是字符串的讀起來像nan。我希望像時間數組(da…

一個小白如何創建MYSQL數據表_MySQL小白掃盲(二)--建表、添加、查詢

1.SELECT子句字句名稱          使用目的select           確定結果集中應該包含哪些列from           指明所要提取數據的表,以及這些表示如何連接的where           過濾掉不需要的數據group by         用于…

元數據解決分表不可 mysql_MySQL InnoDB技術內幕:內存管理、事務和鎖

前面有多篇文章介紹過MySQL InnoDB的相關知識,今天我們要更深入一些,看看它們的內部原理和機制是如何實現的。一、內存管理我們知道,MySQl是一個存儲系統,數據最后都寫在磁盤上。我們以前也提到過,磁盤的速度特別是大容…

navicat for mysql 13_Navicat for MySQL下載

Navicat for MySQL 是一套管理和開發 MySQL 或 MariaDB 的理想解決方案。它使你以單一程序同時連接到 MySQL 和 MariaDB。這個功能齊備的前端軟件為數據庫管理、開發和維護提供了直觀而強大的圖形界面。它提供了一組全面的工具給 MySQL 或MariaDB 新手,同時給專業人…

mysql 日期型中文報錯_mysql日期類型默認值'0000-00-00' 報錯,是什么問題?

如題,本來是 從另一個數據庫中導出的sql文件,在我電腦上導入報這個錯誤,不知道是不是mysql 版本問題。多方搜索無果,所以上來求助。DROP TABLE IF EXISTS workreport_member;CREATE TABLE workreport_member (uid int(10) unsigne…

python在線作業_南開大學20春學期《Python編程基礎》在線作業參考答案

南開大學20春學期(1709、1803、1809、1903、1909、2003)《Python編程基礎》在線作業試卷總分:100 得分:98一、單選題(共20 道試題,共40 分)1.已知“stra\rb\r\nc\n”,則“str.splitlines()”的返回結果是( )。A.[a,b,c]B.[a\r,b\r\n,c\n]C.[a\r,b\r,c]D.[a\r,b,c]答案:A2.已知“…

spring兼容mysql_springboot 最新版本支持 mysql6.0.6嗎

縹緲止盈1.首先在pom文件中加入下列依賴,一個使用jpa所需依賴,一個連接MySQL使用的依賴:mysqlmysql-connector-javaorg.springframework.bootspring-boot-starter-data-jpa 123456789102.在配置文件中添加datasource配置和jpa配置,在mysql中已經提前創建了一個名為db_test的數據…

java集合map_JAVA中的集合類Map、Set、List

*精煉的總結:Collection 是對象集合, Collection 有兩個子接口 List 和 SetList 可以通過下標 (1,2..) 來取得值,值可以重復而 Set 只能通過游標來取值,并且值是不能重復的ArrayList , Vector , LinkedList…

java虛擬機內存監控_java虛擬機內存監控工具jps,jinfo,Jstack,jstat,jmap,jhat使用...

將會打印出很多jvm運行時參數信息,由于比較長這里不再打印出來,可以自己試試,內容一目了然Jstack(Stack Trace for Java):JVM堆棧跟蹤工具jstack用于打印出給定的java進程ID或core file或遠程調試服務的Java堆棧信息,如…

idea 調試java技巧_IDEA 調試Java代碼的兩個技巧

本文介紹兩個使用IDEA 調試Java代碼的兩個技巧:修改變量值使用RuntimeException終止代碼執行修改變量值在Java代碼調試過程中,我們可以修改變量值,使其達到走指定分支的目的,或者使其滿足某個條件。我們以給變量beanName賦值為例&…

java 10進制轉 000x_java 如何把 00 轉換成 0x00 或者 10 轉換成 0x10

public static void main(String[] args) {String s "00000018A0010098C68E00989A690000000000BC614E000055AA55AA";System.out.println(s);byte[] b HexString2Bytes(s);System.out.println(Bytes2HexString(b));}/*** 將指定byte數組以16進制的形式打印到控制臺*…

java免檢異常_java-異常

java提供了異常處理機制:程序運行受阻時候的處理方式。1、異常分類Error:系統錯誤,由java虛擬機拋出,很少發生;免檢異常RuntimeException:程序設計錯誤,通常由java虛擬機拋出;免檢異…

java編程需要數學知識嗎_初學Java編程,需要英語和數學基礎嗎?

原標題:初學Java編程,需要英語和數學基礎嗎?“學習Java編程英語和數學是必備條件嗎?”很多Java零基礎學習或者轉型IT行業的都會有這樣的疑問,其實剛開始學習Java編程是不需要太高深的數學和英語基礎的。剛開始學習Java…

java map put報錯_java 集合(Map)

-------------------|Map 儲存的數據都是以鍵值對的形式,鍵不可重復,值可重復。----------------------------| HashMap----------------------------| TreeMap----------------------------| HashTableMap接口的方法:添加:put(K…

java簡單數據結構_圖解Java常用數據結構

最近在整理數據結構方面的知識, 系統化看了下 Java 中常用數據結構, 突發奇想用動畫來繪制數據流轉過程.主要基于 jdk8, 可能會有些特性與 jdk7 之前不相同, 例如 LinkedList LinkedHashMap 中的雙向列表不再是回環的.HashMap 中的單鏈表是尾插, 而不是頭插入等等, 后文不再贅敘…

jest java_?使用jest進行測試驅動開發

前言本文將使用jest進行測試驅動開發的示例,源碼在github。重點說明在開發中引入單元測試后開發過程,以及測試先行的開發思路。本文的重點是過程以及思維方法,框架以及用法不是重點。本文使用的編程語言是javascript,思路對其他語…

mysql sqlstate 08001_關于Toad連接DB2的sqlstate=08001錯誤

新裝的centos6.3db29.7,數據庫導入完了的之后用Toad連接訪問之的時候出錯了。DB2 Database Error: ERROR [08001] [IBM] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being use…