说我的要求是
"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
但是,我很难将其翻译成 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
使用正确,我该如何制作合适的过滤器?如果没有,我用什么,我该怎么做?
谢谢!
PS这是一个大大简化的版本,我试图做的清楚,我的WHERE
条款实际上比这里显示的要复杂得多。实际上,我需要检查子查询中是否存在 id 并检查许多未索引的属性。任何给出的解决方案都需要支持这一点。
谢谢