代码之家  ›  专栏  ›  技术社区  ›  Michal Ciechan

NHibernate全文搜索

  •  2
  • Michal Ciechan  · 技术社区  · 15 年前

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

    2 回复  |  直到 12 年前
        1
  •  2
  •   Paco    15 年前

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

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

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

        2
  •  1
  •   hassan    12 年前

    您可以使用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>
    

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