0

我已经在 Sql Server 2008 表之一上实现了全文搜索。我正在使用包含表查询来获取结果并根据排名对其进行排序。

例子

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

现在,当查询返回结果时,它将那些具有高频率的任何这些单词的行排名更高,因为我希望这些行排名更高,其中包含所有这些单词。

Like查询会以这种方式返回结果

  1. 通缉 通缉新郎(等级 200)
  2. 招聘工程师(等级 180)
  3. 工程师等级通缉新娘(190)

我希望第三个排名更高。有什么可以告诉 containstable 不会增加重复文本的权重。

4

2 回答 2

0

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

于 2012-05-16T04:46:03.897 回答
0

大多数面向搜索引擎的网站都使用FULL-TEXT-SEARCH. select与...相比,它会更快LIKE...我添加了一个示例和一些链接...我认为这对您很有用...在此全文搜索中也有一些条件...

第1步

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

第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

于 2013-03-08T06:23:52.463 回答