我使用什么索引器来查找集合中与我的列表最相似的列表?
What indexer do I use to find the list in the collection that is most similar to my list?
假设我有我的配料清单:
{'potato','rice','carrot','corn'}
我想 return 从数据库中列出与我的最相似的列表:
{'beans','potato','oranges','lettuce'},
{'carrot','rice','corn','apple'}
{'onion','garlic','radish','eggs'}
我的查询会先 return 这个:
{'carrot','rice','corn','apple'}
我使用过 Solr,也研究过 CloudSearch、ElasticSearch、Algolia、Searchify 和 Swiftype。这些引擎似乎只让我输入一个查询字符串,然后按其他方面进行过滤。
在实际情况下,我的搜索列表大约有 200 个项目,并将与我数据库中的大约一百万个列表相匹配。
我应该使用什么技术来完成我想做的事情?
我是否应该将目光从搜索索引器转移到数据库类的东西上,例如 mongo、map reduce、hadoop...我只知道其他技术的名称,我只需要有人指点我在正确的方向上,我应该为此探索什么样的技术路径。
由于数据太多,我无法真正循环遍历它,我需要一次查询所有内容。
我想知道是什么阻止您尝试使用 Solr,因为 Solr 提供了您需要的大部分内容。您可以将字段声明为 type="string" multiValued="true
并将每个列表项保存为一个值。然后,在查询时,您指定列表中的每个项目作为该字段的搜索词,Solr 将默认为 return 最接近的匹配项。
如果您需要精确控制什么将被视为匹配项(例如,搜索列表中至少 40% 的术语必须在匹配列表中),您可以使用 mm
EDisMax 参数,参见。 Solr Wiki
话虽如此,我必须补充一点,我从来没有搜索过 200 个查询词(我是否正确理解应该搜索其内容的列表将包含大约 200 个项目?)并且不知道它的性能如何.但我想设置一个测试核心并使用脚本用随机列表填充它应该不会超过几个小时,所以应该可以在不投入太多时间的情况下评估这种方法的性能。
假设我有我的配料清单: {'potato','rice','carrot','corn'}
我想 return 从数据库中列出与我的最相似的列表:
{'beans','potato','oranges','lettuce'}, {'carrot','rice','corn','apple'} {'onion','garlic','radish','eggs'}
我的查询会先 return 这个: {'carrot','rice','corn','apple'}
我使用过 Solr,也研究过 CloudSearch、ElasticSearch、Algolia、Searchify 和 Swiftype。这些引擎似乎只让我输入一个查询字符串,然后按其他方面进行过滤。
在实际情况下,我的搜索列表大约有 200 个项目,并将与我数据库中的大约一百万个列表相匹配。
我应该使用什么技术来完成我想做的事情?
我是否应该将目光从搜索索引器转移到数据库类的东西上,例如 mongo、map reduce、hadoop...我只知道其他技术的名称,我只需要有人指点我在正确的方向上,我应该为此探索什么样的技术路径。
由于数据太多,我无法真正循环遍历它,我需要一次查询所有内容。
我想知道是什么阻止您尝试使用 Solr,因为 Solr 提供了您需要的大部分内容。您可以将字段声明为 type="string" multiValued="true
并将每个列表项保存为一个值。然后,在查询时,您指定列表中的每个项目作为该字段的搜索词,Solr 将默认为 return 最接近的匹配项。
如果您需要精确控制什么将被视为匹配项(例如,搜索列表中至少 40% 的术语必须在匹配列表中),您可以使用 mm
EDisMax 参数,参见。 Solr Wiki
话虽如此,我必须补充一点,我从来没有搜索过 200 个查询词(我是否正确理解应该搜索其内容的列表将包含大约 200 个项目?)并且不知道它的性能如何.但我想设置一个测试核心并使用脚本用随机列表填充它应该不会超过几个小时,所以应该可以在不投入太多时间的情况下评估这种方法的性能。