我正在用C#编写搜索引擎,从SQL数据库中检索行。我希望搜索也包括类似的单词 - 例如,如果用户搜索“投资”,搜索也将返回“投资”匹配,或者如果用户搜索“财务”,搜索也将返回匹配“财务”。
如何从搜索关键字中检索类似的单词?
答案 0 :(得分:3)
您正在寻找的是stemming。您可能希望查看Lucene.net中可用的内容...尽管SQL Server也可能通过全文索引本地支持此功能。实际上,看起来它是this article。
答案 1 :(得分:3)
你想要完成的事情被称为“词干”。阅读维基百科文章了解更多信息:
答案 2 :(得分:1)
如果您使用的是SQL Server,则可以使用支持stemming的FREETEXT搜索:
Select * from SomeTable
where FREETEXT(*,'invest')
以上搜索所有列的所有形式的单词invest。它相当于:
Select * from SomeTable
where CONTAINS(*,'"invest" or "invests" or "investor"
or "investing'" or "invested" or "investor's" ... )
这是一个MSDN article,其中包含更多示例和文档。
答案 3 :(得分:0)
此外,soundex搜索可以帮助查找与类似语音相匹配的内容。 SQL Server SOUNDEX() function支持此功能。 .NET没有内置它,但CodeProject有several implementations。