Как построить поисковый запрос Lucene с несколькими параметрами - PullRequest
1 голос
/ 13 февраля 2020

Я новичок в 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, который имеет значение для всех вышеуказанные поля.

1 Ответ

0 голосов
/ 19 февраля 2020

Мне неясно, для чего вы используете searchParams, однако в целом вы можете создать строку запроса (mQuery) в этом случае с любой из функций синтаксиса запроса Lucene. Вот ссылка на документацию для Lucene. Net версия 4.8 Синтаксис анализатора запросов .

Как правило, когда в запросе указывается несколько слов, они обрабатываются с помощью логического ИЛИ, но совпадения c, содержащие все термины, ранжируются выше, чем документы только с одним термином. Так, например, white dog будет соответствовать документам, содержащим white dog или white или dog. Вы можете указать в выражении and, если хотите, чтобы документы соответствовали всем терминам, например, вы можете сказать small and white and dog, если хотите, чтобы документы содержали все три условия.

Чтобы указать специфику c поле для поиска вы перечислите имя поля, за которым следует двоеточие. Так, например, вы можете искать UserId:ron and Categories:dogs. Синтаксис запросов Lucene - это намного больше, но, надеюсь, это поможет вам начать. Для получения дополнительной информации см. Синтаксис запроса Lucene do c, на который я ссылался.

...