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

前任:带来夜晚。

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

需求: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

吉萨

有帮助吗?

其他提示

建立一个搜索引擎是一个非常复杂的工作,涉及模糊性,人类的语言,错别字,等等。你应该尝试使用任何带有数据库引擎。 SQL Server和SQLite的有他们的开箱和大多数其他数据库可能有类似的功能。这些发动机是不是特别好,但他们应该能满足简单的场景。对于较严重的工作,尝试Lucene的,它有各种口味不同的编程语言。

作为一个非常简单的解决方案,您可以使用SQL的LIKE操作。代替

  

从表名选择OBJECT_NAME其中参数=东西

您会做

  

从表名选择OBJECT_NAME其中参数喜欢的东西

这非常简单的场景可能会奏效

一些提示
- 尝试 RDBMS 全文搜索或研究解决方案,例如 Lucene/索尔
- 有以下实现 距离(编辑)SQL, ,对于不那么琐碎的手工排名
- n 元语法(二元语法、三元语法) 可以做很多事情,例如参见中的所有选项 postgres 与 mysql 或 MSSQL 相比的内部搜索

内部 RDBMS 搜索(postgres 可能是一个例外)通常具有太少的选项,实现您自己的搜索通常太难,或者 RDBMS 不会让您(有效地)做到这一点。

在爪哇您有 Lucene的

还有在PHP为它的端口(Zend的Lucene的)。

您也有一个端口C# Lucene的.NET

只是通过改变你的数据库模型,你可以将它集成到搜索引擎。

一看。我用的Lucene在过去,它一直是非常有效和高效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top