基于强度的搜索多个术语
本文关键字:术语 搜索 于强度 | 更新日期: 2023-09-27 18:18:31
我正试图找出如何使用多个字段/术语实现"基于强度的搜索"。例如:
搜索:
- 腿数:4
- 有皮毛:True
- 有蹄:True
- 关键词:Moo
结果:
- (高)牛
- [中]猫
- [中]狗
- [Low]无毛鼹鼠
- [No Match] Bird
可能值得一提的是,我实际模型中的标准在某种程度上是加权的、相关的和结构化的。
我选择的语言是c#。. NET,我使用的是LINQ + Fluent NHibernate。我已经尝试了几种不同的方法来实现这一点,但大多数都感觉很笨拙。目前,我使用的数据库有超过10万个"动物",他们可以针对~15个字段进行搜索。
问题:
这类搜索有名称吗?
在尝试实现这一点时,是否有我应该意识到的最佳实践或技术?
有什么高性能的方法来实现这样的搜索吗?伪代码和一般逻辑与代码一样值得欣赏。
你说的是"加权词查询"。
既然你已经在使用LINQ,我假设是MSSQL,你最快的解决方案可能是编写一个存储过程(你最终会用LINQ调用),它使用全文搜索函数(CONTAINSTABLE
和ISABOUT
)来按你想要的方式对结果进行"排序"。
如果你期望大量的搜索流量,或者你的排名要求变得更加复杂,或者你的收藏显著增长,你应该考虑将此功能分解为一个搜索引擎,如Solr或Elasticsearch