【发布时间】:2012-09-20 15:00:14
【问题描述】:
我有一个应用程序需要过滤并从文章列表中检索结果。对于数据库,我使用 MySQL,NHibernate 作为 ORM。该查询还基于关键字进行全文搜索,为此它使用 Lucene.Net。
我的问题是查询跨越“两个”域。例如,我可能需要获取所有包含关键字“交通管制”的文章,并且 PublishedOn
如果我首先在 MySQL 上进行搜索,我不能只得到前 50 个,因为结果可能会在 Lucene 中进一步过滤,我需要 50 作为我的页面大小。如果我从 Lucene.Net 开始,情况也是如此。此外,最好按照“相关性”进行排序,所以这是 Lucene 可以做的事情,而不是 MySQL。
我目前的方法是首先通过 MySQL 过滤,并检索匹配记录的所有主键。然后,我在 Lucene 中进行查询,使用术语查询将主键与结果列表相匹配。但是,Lucene 对于这样的查询非常慢,并且数据库可以包含超过 200,000 篇文章。在 Lucene 中执行这样的查询需要很长时间,而对于全文搜索来说速度非常快。
有什么想法可以解决这样的问题吗?
【问题讨论】:
标签: c# mysql database nhibernate lucene.net