开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
RavenDB 隐藏的特性 - 技术翻译 - 开源中国社区

RavenDB 隐藏的特性 【已翻译100%】

标签: RavenDB
oschina 推荐于 4年前 (共 5 段, 翻译完成于 02-07) 评论 0
收藏  
19
推荐标签: RavenDB 待读

在这篇不久前在挪威的一个开发者杂志上发表的文章中,我们将探讨两个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对象,它再传递给方法,如上所示。

赵亮-碧海情天
 翻译得不错哦!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
评论(0)
Ctrl/CMD+Enter

暂无网友评论
顶部