对搜索方法的要求建议

问题描述:

我将这个问题提出来的“更大的创造性”的一些建议可能会解决这个问题的搜索方法。我想出了一个有点人为的例子来试图解释这个问题,以至于可能会推荐一些解决方案。对搜索方法的要求建议

问题: 我们使用的是关系数据库(MSSQL),并需要通过产品搜索有以下限制:

  • 可用性
  • 市场
  • 价格

我们还需要对 进行分组和排序 - 价格 - 市场 - 较大的实体汇总

让我看看,如果我能解释采用半真实世界的实体:

想到一个应用程序,允许用户搜索酒店房间,他们可以预订的。以下标准可能适用于搜索: - 预订房间的日期为 - 他们想要酒店房间的市场(纽约市,波士顿等) - 酒店房间的设施可能会有(热水浴缸,壁炉 - 床 数量 - 套房与否

在所有情况下,搜索标准以上可能会或可能不会选择那么,一个非常广泛的搜索是可能的(在上述日期,不要” (在纽约市,2张床,有壁炉)

为了增加复杂性,我们还需要返回所选标准的酒店房间的价格。显然,特殊的价格结冰,不同的住宿天数的价格(周四晚上的一个价格和周末和周六晚上的周末住宿的不同价格)。

了一些我们已经合作过身边的事情是: - Solr的 - Endeca的 - SQL查询 - 在C#代码实现和优化时/在必要时(认为装饰模式)

我”什么m在这里寻找的是一些来自社区的建议 - 以上哪个不适合这个问题 - 哪个可能适合这个问题 - 哪种其他技术可能效果更好,我们还没有想过 - 其他人在类似的问题上运用的技术运行良好(非技术特定fic)

如果您有任何想法或建议,请事先致谢。我将尝试在这个问题上应用适当的标签,但是我已打开并且可以添加/删除以帮助您获得正确的答案。

+0

您是否考虑在http://programmers.stackexchange.com/上提问此问题? – 2012-01-05 18:35:48

+0

封闭为跨网站欺骗:http://programmers.stackexchange.com/questions/128696/suggestions-for-search-methodology-requested – casperOne 2012-01-06 19:48:47

你所描述的内容归结为具有属性的实体。我花了很多时间处理类似问题,其中产品和属性可能是任何东西(例如类别,条件,价格,颜色等)的实体。产品不必共享属性,尽管存在一个共同的设置。

我最终得到的解决方案是使用lucene(.net在我的情况)。不过,我会建议你使用Solr,因为它更容易使用它的过滤功能(有一个特定的原因,我不能使用它,但它可能是更简单的解决方案...虽然它很容易起床和运行Lucene.net)。基本的想法是,你创建文档时将你的属性作为属性。然后设计一些可以传递给搜索代码的对象,该对象列出了用户在他们想要过滤的值上搜索的属性。之后,使用该对象在Lucene中建立一个查询来检索您想要的文档非常容易。

如果需要的话,实现分页相对比较简单。我在Solr中发现的一个优点是它可以很容易地计算属性组(例如,我可以搜索“Nikon”,并且可以将所有带有“Nikon”的文档返回给它们,从而将属性分组,例如不同的类别或不同的颜色....你可以使用Lucene来做到这一点,但更多的工作)。

我对Lucene的解决寻找不同的搜索选项后,其花费的时间implmenting使用SQL Server的搜索功能的功能公平一点,但我发现Lucene的是更快,它看起来是压在我DB服务器(和我收集Stack OverFlow本身已从使用SQL Server的搜索转移到Lucene)Stack Overflow Search