说我的要求是如何过滤我的lucene搜索结果?
"search for all users by name, who are over 18"
如果我使用SQL,我可能会写类似:
Select * from [Users]
Where ([firstname] like '%' + @searchTerm + '%' OR
[lastname] like '%' + @searchTerm + '%')
AND [age] >= 18
然而,有IM难度翻译到这个lucene.net。
这是我到目前为止有:
var parser = new MultiFieldQueryParser({ "firstname", "lastname"}, new StandardAnalyser());
var luceneQuery = parser.Parse(searchterm)
var query = FullTextSession.CreateFullTextQuery(luceneQuery, typeof(User));
var results = query.List<User>();
如何添加在 “凡年龄> = 18” 位?
我听说过.SetFilter()
,但这只接受LuceneQueries,而不接受IQueries。如果SetFilter
是正确的使用方法,我该如何制作合适的过滤器?如果不是,我该怎么做,我该怎么做?
谢谢!
P.S.这是我为了清晰起见而做的简化版本,我的WHERE
子句实际上比这里显示的要复杂得多。实际上,我需要检查子查询中是否存在ids,并检查一些未索引的属性。任何解决方案都需要支持。
谢谢
你能举个例子吗?在Lucene.Net中QueryFilter只接受LunceneQueries,而不是nhib查询。我如何创建查询(如果可能,以通用的方式创建,而不仅仅是“age> = 18”)?谢谢 – 2009-08-14 08:42:23