2KB项目,专业的源码交易网站 帮助 收藏 每日签到

RavenDB 隐藏的特性

  • 时间:2019-01-23 18:37 编辑:2KB 来源:2KB.COM 阅读:312
  • 扫一扫,手机访问
  • 分享
摘要:
RavenDB 英文原文:RavenDB hidden features

在这篇不久前在挪威的一个开发者杂志上发表的文章中,我们将探讨两个RavenDB的鲜为人知的功能,并显示他们如何能大大改进你的应用程序和您的业务。

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

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

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

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

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

var query = session.Query<Book>("BooksIndex").Search(x => x.Author, "赵亮");
var results = query.ToList();

if (results.Count == 0)
{
    var suggestions = query.Suggest();
    foreach (string suggestion in suggestions.Suggestions)
   {
       Console.WriteLine(suggestion);
    }
}

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

使用MoreLikeThis查找关联文档资料

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

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

var list = session.Advanced.MoreLikeThis<Book>("BooksIndex",
    new MoreLikeThisQuery
   {
        DocumentId = "books/2",
        Fields = new[] {"Title", "Author", "Description"},
        MinimumWordLength = 2,
   }
);

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

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

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部