我的项目基于问题与解答(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。
答案 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或二进制结果。
查看详细功能和特定查询部分。这就是您的应用所需的一切。