基于强度的搜索多个术语

本文关键字:术语 搜索 于强度 | 更新日期: 2023-09-27 18:18:31

我正试图找出如何使用多个字段/术语实现"基于强度的搜索"。例如:

搜索:

  • 腿数:4
  • 有皮毛:True
  • 有蹄:True
  • 关键词:Moo

结果:

  • (高)牛
  • [中]猫
  • [中]狗
  • [Low]无毛鼹鼠
  • [No Match] Bird

可能值得一提的是,我实际模型中的标准在某种程度上是加权的、相关的和结构化的。

我选择的语言是c#。. NET,我使用的是LINQ + Fluent NHibernate。我已经尝试了几种不同的方法来实现这一点,但大多数都感觉很笨拙。目前,我使用的数据库有超过10万个"动物",他们可以针对~15个字段进行搜索。

问题:

这类搜索有名称吗?

在尝试实现这一点时,是否有我应该意识到的最佳实践或技术?

有什么高性能的方法来实现这样的搜索吗?伪代码和一般逻辑与代码一样值得欣赏。

基于强度的搜索多个术语

你说的是"加权词查询"。

既然你已经在使用LINQ,我假设是MSSQL,你最快的解决方案可能是编写一个存储过程(你最终会用LINQ调用),它使用全文搜索函数(CONTAINSTABLEISABOUT)来按你想要的方式对结果进行"排序"。


如果你期望大量的搜索流量,或者你的排名要求变得更加复杂,或者你的收藏显著增长,你应该考虑将此功能分解为一个搜索引擎,如Solr或Elasticsearch