NHibernate全文搜索

时间:2010-08-06 14:11:31

标签: mysql nhibernate search full-text-search

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

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

有没有人有任何建议?或者其他任何进行文本搜索的方法?

编辑:使用MySQL数据库,不管它有什么不同。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

您可以使用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> ();        
}