如何使用多个参数构造lucene搜索查询

gcxthw6b  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(199)

我是新来的Lucene.net,在这里我想知道如何使lucene搜索查询几乎像sql查询。让我给予更多..
我有一组参数值,假设一个存储过程有一组参数。现在我想用所有这些参数建立一个查询。

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索引中获取所有记录,该索引具有上述所有字段的值。

ryevplcw

ryevplcw1#

我不清楚您使用searchParams做什么,但是一般来说,您可以使用Lucene查询语法的任何特性来构造查询字符串(mQuery)。下面是Lucene.Net 4.8版查询解析器语法文档的链接。
总的来说,当在查询中列出多个词时,它们被用逻辑OR处理,但是包含所有词的文档匹配的排名高于仅具有一个词的文档。因此,例如white dog将匹配包含white dogwhitedog的文档。如果您只需要与所有术语匹配的文档,则可以在语句中输入and。例如,如果您只需要包含所有三个术语的文档,则可以输入small and white and dog
要指定要搜索的特定字段,请列出字段名称,后面跟一个冒号。例如,您可以搜索UserId:ron and Categories:dogs。Lucene查询语法还有很多,但希望这些能帮助您入门。有关更多详细信息,请参阅我提到的Lucene查询语法文档。

相关问题