【问题标题】:Open source LINQ search engine for website用于网站的开源 LINQ 搜索引擎
【发布时间】:2011-02-11 04:57:08
【问题描述】:

我想在我的网站上添加一个搜索引擎。我希望它处理布尔搜索并按顺序或最佳匹配给我一个结果列表。我需要它能够使用 LINQ,因为我想在运行的最终查询中添加额外的 where 子句。我正在寻找与 LINQ 一起使用的最佳开源 .NET 搜索引擎。我喜欢 lucene.net,但问题是 LINQ 接口(LINQ to Lucene)自 2008 年以来一直没有更新。有什么好的选择吗?

【问题讨论】:

    标签: asp.net linq search full-text-search search-engine


    【解决方案1】:

    您可以尝试使用 Microsoft 提供的免费 Search Server Express。它在beta for the 2010 version 中可用,但很快就会发布。 (SharePoint) 搜索 API 与 SQL 非常相似,因此您可以附加额外的 where 子句。

    它不是 linq 或开源的,但它是免费的,并且可能适用于您的情况。我自己看了一点lucene linq api,得出了与您相同的结论。它没有更新,而 Lucene 仍在开发中。

    另一种选择是创建您自己的 Lucene Linq 提供程序,但这需要一些工作。

    FullTextSqlQuery 类的文档。 (旧版文档,示例here

    这是一个代码 sn-p 来显示它的样子:

    FullTextSqlQuery fullTextSqlQuery = new FullTextSqlQuery(site)
    fullTextSqlQuery.QueryText = String.Format("SELECT Title, SiteName, Path FROM Scope() WHERE \"scope\"='All Sites' AND CONTAINS('\"{0}\"')", searchPhrase),
    

    您可以在查询的 WHERE 部分附加更多内容。

    【讨论】:

    • Mikael,非常感谢您的建议。我不认为 Search Server 现在是一个选项,因为我需要它在共享的 Web 服务器上工作(不能安装软件)并且我需要它来使用 LINQ。另外我没有时间投资创建一个 lucene linq 提供程序,我宁愿找到已经存在的东西:/
    • 请记住,linq 只是它实现的底层 API 的提供者/包装器。您应该能够使用自定义代码而不是 linq 来修改查询。如果您考虑从另一个数据源(对象、数据库等)加入 linq,那很可能行不通。您的 lucene 查询是什么样的,您需要如何修改它?
    【解决方案2】:

    我决定使用 sql server 的全文索引功能。它不像 lucene.net 那样功能齐全,但根据我的要求,它可以很好地完成工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 2010-11-16
      • 2013-11-13
      • 2010-11-29
      • 2012-08-04
      • 2014-02-18
      相关资源
      最近更新 更多