我正试图弄清楚如何使用多个字段/术语实现“基于强度的搜索”。例如:
搜索:
结果:
值得一提的是,我实际模型中的标准有些加权,相关和结构化。
我选择的语言是C#.NET,我正在使用LINQ + Fluent NHibernate。我一直在玩几种不同的方法来实现这一点,但大多数人都觉得笨重。目前,我使用的DB有超过100,000个“动物”,可以在~15个字段中搜索它们。
问题:
这种搜索是否有名称?
在尝试实施此操作时,是否有我应该注意的最佳做法或技巧?
有哪些高性能方法可以实现这样的搜索? Psuedo代码和通用逻辑与代码一样受欢迎。
答案 0 :(得分:1)
您正在谈论" weighted term query"。
由于您已经在使用LINQ并且我假设使用MSSQL,因此您最快的解决方案可能是编写一个使用全文搜索功能(CONTAINSTABLE
和ISABOUT
)"排名"结果你想要的方式。
如果您预计搜索流量过大或排名要求变得更加复杂,或者您的收藏量显着增加,则应考虑将此功能分解为Solr或Elasticsearch等搜索引擎。