搜索引擎的SQL查询

时间:2013-01-16 13:01:16

标签: sql sql-server sql-server-2008

我的项目基于问题与解答(stackoverflow样式)。

我需要允许用户搜索以前提出的问题。

问题表格如下:

Questions
-------------------------------------------------
id                 questions
-------------------------------------------------
1                  How to cook pasta?
2                  How to Drive a car?
3                  When did Napoleon die?

现在,当我要写一些东西去搜索时,我会写这样的东西:

When did Brazil win the world cup?

我们假设我将此字符串分隔到一个字符串数组

什么是最好的 SELECT SQL查询来获取包含这些字符串的所有问题,忽略每个单词的大写和小写,并用较少提到的单词对结果进行排序,为什么?

因为会有很多问题会包含何时,将会,如何等等,但没有那么多问题会包含巴西,所以巴西就像关键字

我正在使用SQL Server 2008。

3 个答案:

答案 0 :(得分:4)

你真的不想在原始SQL中这样做。

我建议您查看数据库的全文搜索选项,this可能是一个很好的起点。

答案 1 :(得分:1)

在mysql中你有全文索引和match()选择函数,只允许这个, 在SQL Server中你应该使用函数Contains() 查找更多信息 http://msdn.microsoft.com/en-us/library/ms142571.aspx

答案 2 :(得分:0)

您的选择不是最佳选择。看看开源Apache Solr项目。 http://lucene.apache.org/solr/

Solr是一个独立的企业搜索服务器,具有类似REST的API。您可以通过XML,JSON,CSV或二进制文件将文档放入其中(称为“索引”)。您可以通过HTTP GET查询它并接收XML,JSON,CSV或二进制结果。

  • 针对大容量网络优化的高级全文搜索功能
  • 基于流量标准的开放接口 - XML,JSON和HTTP
  • 全面的HTML管理界面服务器统计信息
  • 通过JMX公开以监控线性可扩展,自动索引
  • 复制,自动故障转移和恢复近实时索引
  • 灵活且适应XML配置可扩展插件 体系结构

查看详细功能和特定查询部分。这就是您的应用所需的一切。