2012-05-09 25 views
0

我在Sql Server 2008表之一上實現了全文搜索。我正在使用containstable查詢來獲取結果並根據Rank對其進行排序。在全文搜索的結果中減少重複詞語的重量

SELECT Ad_text.*, k.rank 
FROM Ad_text 
INNER JOIN CONTAINSTABLE(Ad_text, text, 'Wanted or Engineers or bride') k 
ON Ad_text.id = k.[KEY] order by rank desc 

現在,當查詢返回結果,排列具有高數量的任意這些詞,其中,因爲我想那些行進行排名更高,其具有所有這些詞頻率的較高的行。

像查詢將在這種方式

  1. 返回結果通緝求購求購新郎(等級200)
  2. 求購工程師(等級180)
  3. 求購新娘工程師等級(190)

我希望排名第三的位置更高。有沒有人告訴遏制不增加重複性文本的重量。

回答

0

發現一個解決方法已使用FreeTextSearch及其記錄數量的功能。它解決了目的

0

大多數搜索引擎orloyded網站使用FULL-TEXT-SEARCH。 這將是非常快比較selectLIKE ... 我增加了一個例子,一些鏈接... 我認爲這將是對你有用... 在此全文搜索有一定的條件下也.. 。

STEP:1

CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    title VARCHAR(200), 
    body TEXT, 
    FULLTEXT (title,body) 
); 

STEP:2

INSERT INTO articles (title,body) VALUES 
    ('MySQL Tutorial','DBMS stands for DataBase ...'), 
    ('How To Use MySQL Well','After you went through a ...'), 
    ('Optimizing MySQL','In this tutorial we will show ...'), 
    ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'), 
    ('MySQL vs. YourSQL','In the following database comparison ...'), 
    ('MySQL Security','When configured properly, MySQL ...'); 

STEP:3
自然語言全文搜索:

SELECT * FROM articles 
    WHERE MATCH (title,body) AGAINST ('database'); 

布爾全文搜索

SELECT * FROM articles WHERE MATCH (title,body) 
    AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE); 

通過這個鏈接 viralpatel.netdevzone.zend.comsqlmag.comcolorado.eduen.wikipedia.org