RavenDB 隐藏的特性

2022-04-14 00:00:00 查询 用户 文档 资料 词语

对搜索字词提示替换的拼写

设想以下场景:你去一个网站寻找一个熟人的一些信息。您搜索一次,两次,但无法找到,所以你放弃了。几天后,你发现原来听起来象Danny的那家伙 实际拼写是Danni,但为时已晚。你放弃了的那个网站失去了你 —— 一个潜在的用户,或者在某些情况下,可能是一个付费的客户。

听起来很熟悉?太多的网站和应用程序一次又一次地发生这种情况。试图猜测用户实际上是在寻找什么,并试图为他提供有意义的替代品被许多开发者认为是矫枉过正。由于这样,他们没有意识到他们的应用的全部潜力,失去了很多客户和业务。

搜索引擎的一个非常流行的做法是当它们发现搜索结果可能不尽如人意时尝试和猜测建议的词语。你可能熟悉当你偶然做出一个错误拼写时谷歌的“你的意思 是……?”。这并不是说谷歌正试图嘲笑你或任何东西,那只是它能够找到一个与你实际键入的词语有一定的编辑距离的更高得分的词语。

RavenDB提供了一个非常容易和直观的方式,来为那些返回的结果很少或干脆没有结果的查询提供替代词语,就像谷歌的“难道你的意思是?” 当一个全文查询返回结果为零,或当你有其它迹象认为返回的查询结果不好时,你可以询问RavenDB来获得对于这个查询应该使用的词语(集合)的建议。(代码请查看原文。)

在上面的代码中,我们创建了一个查询,并发出它得到结果,然后我们把它放在一边,以便我们能够在必要时重用它获得建议。如果在我们的数据集中没发现有作者 为“赵亮”的结果,我们就要RavenDB给出建议。Suggestions将返回一个词语列表。它们每一个都可以用来通知用户,甚至重新发出查询,一切 都取决于你认为对于你的应用程序怎样才适合。

使用MoreLikeThis查找关联文档资料

许多大型的在线电子商城-比如亚马逊-通过在产品页面和结算过程中向用户显示“关联产品”来大化自身的利润。与其类似,像CNN这样的web站点 为了让用户在自己的网站上花费更多的时间,它在文章的底端显示与这篇文章相关内容的链接。与你所想象的不同,做到这些不需要一个全职编辑人员对所有的内容 进行编辑。只要把当前的内容所包含的数据与其余的内容进行比较就可以非常容易实现,而且可以向用户显示相似度高的哪些内容。因此问题是:你怎样能够非常 容易且有效地实现这样的比较?

RavenDB提供Lucene的MoreLikeThis功能,通过这个功能可以对文档资料进行全文搜索查询,终可以找到相似的文档资料。结果 是通过对文档资料和文档资料出现频度查询,得到与原始资料相类似的文档资料。为了实现这一功能,你需要使用文档资料ID来对RavenDB服务器进行访 问,告诉服务器用来进行比较的是哪个稳当资料的索引:

(代码请查看原文。)


调用此方法的结果是RavenDB认为与用作查询的书相类似的书的对象数组。为了充分利用这一功能,你想在文字属性(如标题和描述)上执行查找,并确保它们已被编入索引作为分析。这样做会利用幕后RavenDB的全文搜索能力,将大限度地考虑有关产品的相关性。

另外,也可以执行微调和调整,例如手工挑选使用什么属性作实际比较,小或大字长是多少。所有这些都作为参数传递给MoreLikeThisQuery对象,它再传递给方法,如上所示。


来自:https://mp.weixin.qq.com/s/-iozgOe-NTSZ5_ENKiZzcw

相关文章