【发布时间】:2014-01-08 08:29:25
【问题描述】:
我将 Solr 用于(一个不寻常的?)为数字数据提供排名结果的用例。/
假设我有一组对象 O {O1...On} 的记录集,并且对于这些对象中的每一个我都有多个测量值:例如粘度、孔隙率、渗透率等。
对于 On+1 对象,我需要搜索上述记录集以找到最“相似”的(沿着粘度、孔隙度、渗透率的多个维度)等。
由于记录集 O 是数亿条记录,因此实际上不可能针对每个相似性度量(例如余弦或 Minkowski)运行。我需要将结果集修剪为前 100 名左右的候选人,并且我正在使用 Solr 运行查询。
我使用 On+1 对象的参数运行范围查询,例如[9.5 TO 10.5] 之间的孔隙度,因此 +/-5% 的值,布尔查询将它们链接起来以获得匹配的排名列表。
我的问题:
是否有更好的方法来执行此操作并从 Solr 获得我可以使用的分数,也许是阈值。当前的范围查询方法得分似乎遵循阶梯函数,无济于事。
我能否以 text_general 格式保存数字并使用查询数字进行搜索? 由于 quert 字符串可能会运行很长时间,我不确定如何处理这个问题,也许使用 MLT?
有什么想法吗?或对其他工具包的建议来帮助解决上述问题?
【问题讨论】:
-
这种相似性应该如何为最终用户工作?他们是否只能在结果本身中搜索相似的结果(例如,选择一个结果文档并获得相似性),还是应该同时提供将用作相似性基础的输入数据,或两者兼而有之?
-
其实两者都是,即用户上传一个对象的值,我们提供一个结果集,他们也可以从中搜索相似的。
标签: database search solr search-engine numerical-methods