从基于标签的搜索引擎返回结果

时间:2012-02-03 07:34:54

标签: sql search

所以我正在构建一个搜索应用程序。我的应用程序将多个术语/标签与文档相关联。例如,

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 - 文档与标签相关联

1 个答案:

答案 0 :(得分:0)

您没有描述您的数据模型,因此我假设您的表格至少为(document, tag)

然后你可以......

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