2012-02-03 62 views
1

所以我正在构建一个搜索应用程序。我的应用程序将多个术语/标签与文档关联。例如,从基于标签的搜索引擎返回结果

Doc 1 
- School 
- Books 
- Teachers 
- ... 

Doc 2 
- Obama 
- Terror 
- Election 
- ... 

Doc 1000 
- Google 
- Facebook 
- Books 
- ... 

我目前使用MySQL作为数据库。文件台有大约100,000行。

所以我的问题:

假设用户输入查询“校书”,然后将其转换成两个标签(学校,书籍)

  • 我如何获得所有文件与此标签
  • 具有与它们相关联的两个标签的文档应该比仅具有一个标签的文档高。有没有办法用SQL语句/查询执行此排名
  • 难道所有可能的结果都会返回给用户吗?我可以只放置一个限制(说10,000)

谢谢。

编辑

该数据库由3个表格组成。

  1. 标签 - 对于标签
  2. 文件 - 这些文件
  3. Document_Tags - 文档与标签

回答

0

你没有描述你的数据模型相关联的,所以我会假设你至少有。

然后,您可以做...

SELECT 
    document, 
    COUNT(DISTINCT tag) 
FROM 
    yourTable 
WHERE 
    Tag IN ('school', 'books') 
GROUP BY 
    document 
ORDER BY 
    2 DESC 
LIMIT 
    10000 
+0

不错,我会尝试一下 – Kennedy 2012-02-03 09:34:39