我有一个应用程序,我需要在各种基于文本的字段中进行搜索。该应用程序是使用 NHibernate 作为 ORM 开发的。
我想在搜索中实现 Porter Stemming,以便即使在关键字与相似词匹配时也能够返回相关结果,例如产品的描述包含memories
而搜索关键字是memory
.
任何人都可以建议此类搜索的最佳做法吗?想到的第一个想法是在数据库中存储同一字段的两个版本,例如:
Description
Description_Search
该Description
列将是网站管理员输入的文本,并且是前端可见的文本。
这Description_Search
将包含相同的文本,但通过了 Porter-Stemming 算法。然后搜索查询将基于该Description_Search
字段,而不是Description
.
这有意义吗?存储几乎相同文本的两个版本是否浪费空间?
另外,Lucene.Net
在这种情况下会有帮助吗?我也在考虑集成 Lucene.Net 以进行基于全文的搜索,但还没有详细研究它。
提前致谢!