我正在用C#編寫一個搜索引擎,從SQL數據庫中檢索行。我希望搜索也包含類似的詞 - 例如,如果用戶搜索「投資」,搜索也會返回「投資」匹配,或者如果用戶搜索「財務」,搜索也會返回匹配「財務」。用於從關鍵字中檢索相似單詞的API?
如何從搜索關鍵字中檢索類似這樣的詞?
我正在用C#編寫一個搜索引擎,從SQL數據庫中檢索行。我希望搜索也包含類似的詞 - 例如,如果用戶搜索「投資」,搜索也會返回「投資」匹配,或者如果用戶搜索「財務」,搜索也會返回匹配「財務」。用於從關鍵字中檢索相似單詞的API?
如何從搜索關鍵字中檢索類似這樣的詞?
你試圖完成什麼被稱爲「Stemming」。閱讀維基百科的文章的詳細信息:
您要找的是stemming。您可能需要查看Lucene.net中的可用內容...儘管SQL Server也可能使用全文索引來本地支持此功能。確實,它看起來像是,給出this article。
如果您正在使用SQL Server,你可以採取FREETEXT搜索,它支持stemming的優勢:
Select * from SomeTable
where FREETEXT(*,'invest')
上面搜索所有列投資的所有形式的詞。它相當於:
Select * from SomeTable
where CONTAINS(*,'"invest" or "invests" or "investor"
or "investing'" or "invested" or "investor's" ...)
以下是MSDN article的更多示例和文檔。
此外,soundex搜索可以幫助找到具有類似語音的匹配項。這在SQL Server SOUNDEX() function中受支持。 .NET不會出現內置的,但CodeProject有several implementations。