视频: 透過區塊鍊自動化保險契約 by Rhys Chang - JCConf 2016 R1 Day2-5 2024
许多NoSQL数据库都支持查询功能和某些搜索功能。选择合适的人往往归结为理解您需要支持的功能。
虽然它们是相关的,但是查询和搜索是完全不同的。查询只返回匹配其中所有条款的结果。另一方面,搜索可以包括可选的术语,并且通常提供通过相关性计算排序的结果。
<! --1 - >相关性计算可以实现更灵活的搜索交互。进行搜索的用户最后调用哪个结果与他们匹配 - 搜索引擎只是提供有序的提示。
搜索和查询都可以启用精确值匹配和范围查询 - 例如,记录中的日期字段值位于两个值之间。范围查询不被许多NoSQL数据库或搜索引擎支持,所以如果你需要它们,一定要在你的选择过程中尽早检查。
<! - 2 - >大多数搜索引擎设计用来搜索整个记录,并将其查询条件限制在特定的字段(例如“发布日期”)。通常情况下,可以使用多种自由文本查询方法,包括:
-
Word查询,每个单词在一起进行OR运算: 因此,“adam fowler blog”被评估为adam OR fowler OR博客,所有的单词,导致更高的相关性分数比只使用一个单词。
-
短语查询,其中整个短语被视为一个: 因此,评估“对老鼠和男人”的结果,使得结果必须以相同的顺序具有所有的单词一场比赛。
-
通配符: 搜索“run *”返回“run”,“runs”,“running”和“runner”的结果。 “
-
Stemming: 搜索”run“也返回”ran“和”runs“的结果,但不是”running“或”runner“。搜索“猫”也返回“猫”的结果。 “
-
词形: 这是比词干更高级的方法。例如,术语“更好”的词式化导致它的 词条 (词的基本或字典形式),在这种情况下是“好的”。 “
大多数人喜欢在Google风格的搜索框中输入搜索字词,因为它非常人性化。
搜索引擎支持名为 搜索语法的文本格式。 例如,在Google中,输入“site:uk AND Adam Fowler AND London”与来自英国网站的所有提及伦敦字词和Adam Fowler字样的文档相匹配。
也可以使用括号将术语嵌套在术语中,这对布尔运算符(如AND,OR和NOT)特别有用。
有时,需要一个更结构化的查询机制。通常,这是一种JSON或XML格式的定制且非常精细的格式。在地理空间查询中可以找到一个很好的例子。指定要搜索的区域的边界框通常最好在地图上完成,方法是绘制一个框,而不是在自由文本搜索栏中输入坐标。
越来越多的人使用地理空间查询来限制他们的搜索,包括:
-
Point: 匹配一个确切点。
-
点半径: 匹配点(圆形区域)内的距离。
-
边界框: 匹配一个正方形区域(如在地图的显示区域中)。
-
多边形: 匹配手绘或不规则形状。一个好的例子是一个县或州的形状。这些基本上是一个区域内的大型坐标阵列。
-
多边形 - 多边形相交: 使用查询多边形匹配记录中的多边形(与前面的查询类型中记录中的点相对)。查询多边形是否碰到记录中的一个,或者完全包含它,还是完全错过?这种类型的查询需要大量的处理,并且没有得到广泛的支持,但是在国防工业中却是需要的。重要的是要注意地理空间查询在很大程度上依赖于复杂的数学关于特定的坐标参考系统(称为CRS)如何代表世界。例如,GPS设备使用称为WGS84(也称为EPSG:4326)的系统,而在线地图使用EPSG:900916 CRS系统。了解数据库如何存储其地理空间数据,必要的转换是非常重要的;否则,你可能根本无法获得一场比赛,或者距离你想要的结果有几百码。某些搜索引擎也支持帮助用户输入查询的方法。这在Google的自动完成功能中最为明显。您开始输入查询,而Google建议您选择最有可能的查询。许多搜索引擎支持类似的功能。
更多的搜索功能可用,因此请务必在选择搜索引擎之前进行调查。