2009-03-19 3 views
0

Say У меня есть набор документации, которые идут так:Lucene запрос, чтобы исключить документы, но не Документы с частичными совпадениями

  • Мерседесе
  • мерседеса грузовики

Есть ли способ создать запрос, который будет отфильтровывать mercedes, но не грузовики mercedes?

ответ

0

Вы пробовали:

+ carbrand: мерседес * -carbrand: мерседес

(или независимо от того имя_поля, конечно). Или я упрощаю на основе конкретного примера?

+0

как только я добавляю -carbrand: mercedes ничего не возвращает. Я не обозначал поле, потому что мне нужны пробелы. –

+0

ОК, тогда я бы сделал токенизацию поля. Не знаете, почему это невозможно? Не могу думать о другом решении, если честно. – Razzie

1

Если вам нужна фраза «мерседес транспорт», то ваш запрос может быть просто

«мерседес грузовики»

если вам нужны слова Мерседеса и грузовиков, то ваш запрос может быть

+ мерседес + транспорт

ИЛИ

мерседес И грузовики

Эти запросы будут естественным образом отфильтровать документы, которые не содержат слово грузовиков.

Редактировать: Если это не ключевое слово/неокрашенное поле. В этом случае будет работать только первый пример.

+0

Мне нужны два результата: «mercedes» и «mercedes trucks», чтобы вернуться. Поэтому они неосклинированы (мне нужны пробелы). –

+0

Вы говорите, что вам нужны пробелы в поле, возвращенном в документе из Lucene? Если вы пометили поле и сохранили его в lucene, он все равно вернет значение с пробелами. – dustyburwell

Смежные вопросы