我是Lucene.net的新手,在这里我想知道如何制作lucene搜索查询,就像SQL查询一样。Lemme提供了更多。。
我有一组参数值,假设存储过程中有一组参数。现在我要使用所有这些参数来构建查询。
searchParams.UseLast = Convert.ToBoolean(base.Arguments["UseLast"]);
searchParams.LastEditedFrom= Convert.ToDateTime(base.Arguments["LastEditedFrom"]);
searchParams.LastEditedTo = Convert.ToDateTime(base.Arguments["LastEditedTo"]);
searchParams.Reviewed = Convert.ToBoolean(base.Arguments["Reviewed"]);
searchParams.Approved = Convert.ToBoolean(base.Arguments["Approved"]);
searchParams.Include = Convert.ToBoolean(base.Arguments["Include"]);
searchParams.IsVisibleToUser = Convert.ToBoolean(base.Arguments["IsVisibleToUser"]);
searchParams.IsEntry = Convert.ToBoolean(base.Arguments["IsEntry"]);
searchParams.UserId = Convert.ToInt32(base.Arguments["UserId"]);
IEnumerable Categories = base.Arguments["Categories"] as IEnumerable;
IEnumerable Departments = base.Arguments["Departments"] as IEnumerable;
String mQuery = "How to construct it ....!!!" // Need help in this
var query = queryParser.Parse(mQuery);
indexSearcher.Search(query, collector);
这里,我想从lucene索引中获取所有记录,该索引具有上述所有字段的值。
我不清楚您在使用searchParams
的目的,但是通常在这种情况下,您可以使用Lucene查询语法的任何功能来构造查询字符串(mQuery
)。这是Lucene.Net 4.0版Query Parser Syntax的文档链接。
通常,当查询中列出多个单词时,它们将用逻辑或进行处理,但包含所有术语的doc匹配项的排名高于仅包含一个术语的doc。因此,例如white dog
将匹配包含white dog
或white
或dog
的文档。如果只希望匹配所有术语的文档,则可以在语句中输入and
,例如,如果只希望包含所有三个术语的文档,则可以说small and white and dog
。
要指定要搜索的特定字段,请列出字段名称,后跟冒号。因此,例如,您可以搜索UserId:ron and Categories:dogs
。 Lucene查询语法还有很多,但希望可以帮助您入门。有关更多详细信息,请参阅我参考的Lucene查询语法文档。