2016-11-07 7 views
0

Ниже моя схемаlucene.net фильтрации по нескольким полям

Product_Name (Исследуемый), категория (Исследуемый)

Сценарий:
Я хочу, чтобы найти те продукты, у которых категория именно «сотовые телефоны & Аксессуары»и Product_Name является "сэм *"

Эквивалент SQL Query является

select * from products 
where Product_Name like '%sam%' and Category='Cellphones & Accessories' 

Я использую lucene.net.
Мне нужен эквивалент lucene.net заявление.

ответ

0

Поскольку это несколько месяцев я буду краток (я могу расширить, если вы все еще интересно) ...

Если вы хотите иметь точное совпадение по категориям, то не анализировать. Анализаторы будут разбивать строку на биты, которые затем доступны для поиска. Случай соответствия может быть проблематичным, поэтому, возможно, только простой анализатор будет работать для этого поля. Возможно, было бы полезно проанализировать несколько полей различными способами, чтобы можно было использовать разные запросы.

Примечание: «сэм *» не эквивалентно «% одного%»

Вы хотите, чтобы «сэм», чтобы быть префикс т.е. «образцом» или слово «продукт сэм»? Если это слово, то анализатор пауз не должен быть в порядке. Хороший трюк состоит в том, чтобы создать много полей (с тем же именем) с вариациями имени. Вероятно, только с более низким анализатором случае

название: «некоторые образцы продукт»

названия: «образец продукт»

названия»„продукт“

Тогда посмотри на„префиксы запросов“ тогда запрос (name: sam) будет совпадать.

Также посмотрите на PerFieldAnalyzerWrapper, чтобы использовать другой анализатор для каждого поля.