2

我正在构建一个搜索,我需要在其中实现几个功能。

1- 它应该带来所有同义词,比如如果有人搜索沙发,它应该带来该沙发的匹配结果以及语言匹配,如(沙发、靠垫等)。为此,我正在使用全文搜索。

在我的查询中,我使用 FreeText,但它没有产生所需的结果。我就是做这个的,

select * from Furn_Products Where FreeText(FurnName, 'Couch');

它应该将包含 Cushions、Sofa 和 Couch 的 Names 带走,但它只带 Names with Couch,我也可以通过简单的 Like 查询来做到这一点。有什么解决办法吗?

2- 我需要检查拼写错误,比如如果有人打字,soofa它应该会带来沙发、沙发等的结果。

关于如何实现这一目标的任何提示和想法?提前致谢。

4

3 回答 3

1

I agree with Nelson, there are lots of open-source search engines already out there, and they have gone through a lot of debugging. The biggest ones are Lucene/Solr, Sphinx, and Xapian.

Also, be careful when adding synonym expansion. If you expand paddle, for example, to bat, you might get a lot of zoological results you don't want. If you're doing automated queries. find some examples and set up a test suite with corner cases. If you expect to have human users, find a couple who will walk you through their processes to help build your test suite, and plan to get very friendly with the search logs. Best of luck!

于 2010-12-07T22:50:03.830 回答
0

您可以通过配置词库来明确定义匹配项。

于 2010-12-07T23:55:25.060 回答
0

据我所知,全文搜索不会让您访问所有可能的单词(词干等)。但从 SQL Server 2008 开始,您可以获得所有索引词的列表。

要获得更多功能,您可能必须使用 Lucene 之类的第 3 方索引器。

于 2010-12-07T21:09:22.077 回答