2013-05-31 2 views
0

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

В настоящее время мой Solr настроен таким образом: query=ctnt_val:*keyword* где ctnt_val - это поле, которое я ищу, и ключевое слово значение, которое я передаю.

Так что, если я типа LON он будет возвращать все результаты с больше, Лондон ... который является то, что я хочу.

Проблема заключается в том, что если мой запрос несколько слов долго (например, Gotham City), он возвращает все результаты, содержащие Gotham и все результаты, содержащие город, вместо того, чтобы вернуться только все результаты, содержащие Готэм-сити.

Если изменить запрос, как query=ctnt_val:"keyword" он работает, но тогда я теряю способность делать неточный поиск (долготы больше не будет возвращаться Лондон). Если я сделаю query=ctnt_val:*"keyword"*, я получаю ВСЕ результаты из моей БД, что явно не то, что я хочу.

Любые идеи?

ответ

2

Обработчик поиска по умолчанию использует OR как default query operator.

Вы можете проверить с помощью q=ctnt_val:gotham\ city&q.op=AND, который установит оператор запроса в AND и сделает все условия запроса обязательными.

gotham\ city - \, чтобы избежать пространства из запроса

+0

Weird ... 'д = ctnt_val: мой% 20profile' дает мне 26 результатов, но' д = ctnt_val: мой% 20profile & q.op = AND' дает me 0 results – Lupuss

+0

Вы избегаете пространства. как q = ctnt_val: мой профиль, будет искать поле my on ctnt_val и профиль в поле по умолчанию, а AND делает его обязательным для обоих условий. – Jayendra

+0

'q = ctnt_val: my% 20profile & q.op = AND' и' q = ctnt_val: my \% 20profile & q.op = AND' дают мне тот же результат: zero :( – Lupuss

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