减少全文搜索结果中重复单词的重量

时间:2012-05-09 10:39:53

标签: sql-server-2008 full-text-search

我已在其中一个Sql Server 2008表上实现了全文搜索。我使用containsstable查询来获得结果并根据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)
  4. 我想让第三个人排名更高。是否有任何可以告诉containsstable不会增加重复文本的重量。

2 个答案:

答案 0 :(得分:0)

发现一个解决方法已经使用FreeTextSearch及其记录数量功能。它解决了目的

答案 1 :(得分:0)

大多数搜索引擎定向网站均使用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