3

我的客户在看到我在他的网站中写入的搜索功能后,要求我让它“更模糊”,这意味着它应该更通用——大概是为了返回更多的搜索结果。

我不清楚如何做到这一点。目前,对于每个部分,我都会在数据库中的表(每一列)中LIKE搜索搜索查询的值。

我收到的案例是这样的:

该表有一行,其中 acomplexname的值为“Larae's Corner”,但搜索“Larae”不会将其作为结果返回。

据我所知,检查表中每一行的每一列值是否有任何像搜索查询一样的“模糊”,任何人都可以得到。

任何人都可以帮我解决这个问题吗?我在这里寻找概念。我需要更详细地了解搜索的工作原理,而不仅仅是 LIKE...

提前致谢!

4

2 回答 2

2

看看 MySQL 的全文搜索功能。凭借其自然语言搜索,它可能足以满足您的需求。InnoDB 从 MySQL 5.6 开始支持全文搜索(之前只有 MyISAM 表有这个功能)。

如果这还不够,您可能需要一个专用的搜索工具,例如Apache Solr(或者,如果您使用 Java 并希望直接与 Solr 的底层搜索引擎交互,则Apache Lucene)。其他流行的选择包括elasticsearch(它也在其引擎盖下使用 Lucene)和Sphinx

搜索引擎内部工作的一个关键部分是词干提取达菲莫在他的回答中提到了这一点。

编辑:

这是不同语言的索引兼容的Lucene 实现列表。

于 2013-08-12T12:20:35.720 回答
0

你确实需要比 LIKE 更模糊的东西。我建议使用像 Lucene 这样的工具查看词干和索引。

于 2013-08-12T12:13:08.390 回答