搜索页面的算法

时间:2010-03-30 04:40:59

标签: c# asp.net jquery sql sql-server-2008

我正在创建一个搜索页面,我们可以通过输入文本找到该产品。

ex:带来了夜晚。

我的查询带来了包含至少单词的记录。

需求:   1.第一行应包含给定句子的记录。   2.第二行接下来最匹配。   3.第三行下一个匹配...等

如何实现这一目标。有没有任何算法。如果有人分享你的想法会更有帮助。

修改

示例搜索订单:

1. Brings on the night
2. Whoever Brings the Night
3. Night Baseball Brings
4. Night ride
5. Night Round
6. Brings flower

格塔

5 个答案:

答案 0 :(得分:1)

构建搜索引擎是一项非常复杂的工作,涉及歧义,人类语言,拼写错误等等。您应该尝试使用数据库引擎附带的任何内容。 SQL Server和SQLite开箱即用,大多数其他数据库可能具有类似的功能。这些引擎并不是特别好,但它们应该足够简单的场景。对于更认真的工作,请尝试Lucene,它有各种不同的编程语言版本。

答案 1 :(得分:0)

作为一个非常简单的解决方案,您可以使用sql的LIKE运算符。而不是

  

从table_name中选择object_name,其中parameter = something

你会做

  

从table_name中选择object_name,其中参数LIKE

这可能适用于非常简单的场景

答案 2 :(得分:0)

您是否尝试过全文搜索? http://msdn.microsoft.com/en-us/library/ms142583.aspx

答案 3 :(得分:0)

一些指针
- 尝试您的RDBMS全文搜索或调查Lucene / Solr之类的解决方案 - distance (Levenshtein)中有SQL的实现,因为不那么琐碎的手工排名 - n-grams (bigrams, trigrams)可以做很多事情,例如查看postgres内部搜索中与mysql或MSSQL相比的所有选项

内部RDBMS搜索(postgres可能是一个例外)通常选项太少,实现自己的选项通常太难,或者RDBMS不允许你这样做(有效)。

答案 4 :(得分:0)

在Java中,您有Lucene

在php(Zend Lucene)中还有一个端口。

您还有一个到C#Lucene .NET

的端口

只需更改您的数据库模型,您就可以将其集成到搜索引擎中。

看一看。我过去使用过Lucene,它总是非常有效和高效。