如何在Nhibernate.Search(Lucene.Net)中构建索引?

时间:2010-07-06 14:56:55

标签: lucene.net nhibernate.search

我正在尝试将搜索字段添加到我的网站(ASP.NET MVC 2),并被告知使用Nhibernate.Search是个好主意,看到我已经在其余部分使用了Nhibernate该项目。

无论如何,我遵循了coulpe教程,即this one,以及本网站上的一些问题和回答,但最终,它没有构建索引,搜索也是空的。

我知道这个问题可能有点模糊,但似乎很奇怪,即使我完成了所有被告知的事情,也没有任何作用。

好吧,几乎所有的东西。在某个时候,在其中一个教程中,它告诉我输入:

using (IFullTextSession s = Search.CreateFullTextSession(sf.OpenSession(new SearchInterceptor()))) {

        QueryParser qp = new QueryParser("id", new StopAnalyzer());

        IQuery NHQuery = s.CreateFullTextQuery(qp.Parse("Summary:series"), typeof(Book));

        IList result = NHQuery.List();

        Debug.Assert(result.Count == 2);
}

因为SearchInterceptor不存在于任何地方而无法正常工作......

我在这里遗漏了什么吗? 有没有办法更好地编写搜索查询? 我的应用程序的哪一部分构建了索引?

提前致谢。

2 个答案:

答案 0 :(得分:0)

好的,在进一步干预之后,我想我发现了问题所在。

包括查询在内的所有内容都很好,甚至是类中的标记。

唯一没有发生的事情是索引。当我“运行”应用程序时,它创建一个文件夹(我告诉它),每个索引类的文件夹,每个文件夹中有一个段文件,这似乎是假定的行为,除了段文件只有20字节和似乎只包含有关何时创建它们的信息,没有实际索引...

有关如何解决此问题的任何线索?

答案 1 :(得分:0)

我尝试过类似的事情:

public bool LuceneIndexAllVideos()
    {
        var s = NHibernate.Search.Search.CreateFullTextSession(Session);

        foreach (Video video in Videos)
        {
            s.Index(video);
        }
        return true;
    }

但是很慢,但看起来效果很好...... 看到: https://stackoverflow.com/questions/6989125/lucene-net-nhibernate-updating-lucene-index-from-existing-data