2012-05-09 4 views
0

SQL Server 2008のテーブルの1つで全文検索を実装しました。私は結果を取得し、ランクに基づいてそれをソートするためにcontainstableクエリを使用しています。クエリが返す結果とき全文検索の結果、繰り返し単語に重みを少なくすること。

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)エンジニアのランクのための花嫁(190)
募集
  • のためにエンジニアを募集募集このように結果を返します。

    ここで、3番目のものが上位にランクインされたいのですが。反復的なテキストの重さを増やさないということは、containststableに伝えるものがありますか?

  • 答えて

    0

    見つかった回避策は、レコード数でFreeTextSearchを使用しました。それは目的を解決する

    0

    ほとんどの検索エンジンのオリエンテーションされたサイトは、FULL-TEXT-SEARCHです。この全文検索で それは、私はそれがあなたのために有用であろうと思います ...私は1つの例といくつかのリンクを追加した ...非常に速く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.comリンク、 colorado.edu,en.wikipedia.org

    関連する問題