【问题标题】:NHibernate Full Text SearchNHibernate 全文搜索
【发布时间】:2010-08-06 14:11:30
【问题描述】:

尝试使用 nhibernate 获得文本搜索功能的最佳方法是什么?我已阅读有关 NHibernate.Search 的信息,但在任何地方都找不到该库。

我下载了最新的NHibernate源代码(2.1.2)并编译了,但还是找不到NHibernate.Search。

有人有什么建议吗?或者任何其他的文本搜索方法?

编辑:使用 MySQL 数据库,以防万一。

【问题讨论】:

    标签: mysql nhibernate search full-text-search


    【解决方案1】:

    NHiberante.Search 一个单独的 dll 使 Nhiberante 和 Lucene 一起工作。如果你想使用它,你必须下载并引用它。您可能想阅读一些关于 Lucene 的介绍,以了解 Nhiberante.Search 的工作原理。

    可以获取 dll 的地方之一是hornget

    如果您想要 MySql 特定的全文搜索选项,Nhibernate 不会提供任何帮助供您使用它们。

    【讨论】:

      【解决方案2】:

      你可以使用 Expression.Sql 但我认为使用 mysql 存储过程是个好主意

      你的 MySql 存储过程:

      CREATE PROCEDURE `GetProductsByText`(IN `queryText` VARCHAR(100) CHARSET utf8)
      SELECT *
      FROM Products
      WHERE MATCH(Title, Description) AGAINST (queryText)
      

      你的 nhibernate 映射 xml 文件:

      <sql-query name="GetProductsByText">
      <return class="Product"/>
         call `GetProductsByText`( :queryText )
      </sql-query>
      

      你的 c# nhibernate 查询:

      public IList<Product> FindByText (string text)
      {   
          var session = SessionFactory.GetCurrentSession ();
          IQuery query = session.GetNamedQuery ("GetProductsByText");
      
          return query.SetString ("queryText", text).List<Product> ();        
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-27
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多