我正在尝试将搜索字段添加到我的网站(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不存在于任何地方而无法正常工作......
我在这里遗漏了什么吗? 有没有办法更好地编写搜索查询? 我的应用程序的哪一部分构建了索引?
提前致谢。
答案 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