我已在其中一个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
现在,当查询返回结果时,它会将那些具有较高频率的行排在较高的行中,因为我希望这些行的排名更高,这些行具有所有这些词。
类似查询将以这种方式返回结果
我想让第三个人排名更高。是否有任何可以告诉containsstable不会增加重复文本的重量。
答案 0 :(得分:0)
发现一个解决方法已经使用FreeTextSearch及其记录数量功能。它解决了目的
答案 1 :(得分:0)
大多数搜索引擎定向网站均使用FULL-TEXT-SEARCH
。
与select
和LIKE
相比,它会更快...
我添加了一个示例和一些链接......
我认为这对你有用......
在这个全文搜索中也有一些条件...
<强> 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.net,devzone.zend.com,sqlmag.com,colorado.edu,en.wikipedia.org