Solr - Как мне сопоставить все предоставленные пользователем токены, а не только некоторые? - PullRequest
1 голос
/ 13 декабря 2011

В настоящее время я экспериментирую с Solr и пытаюсь получить запрос, чтобы получить только те документы, для которых совпадают все предоставленные токены.

Например, предположим, у меня есть поле с именем data , которое при индексации использует PatternTokenizer для разделения входящей строки на символ-разделитель, например, '/'. Для входной строки "Foo / Bar / Baz" я бы ожидал получить три токена (если я правильно понимаю документы!). Добавив еще несколько документов, я получаю:

Foo / Bar / Baz ==> Foo, Bar, Baz

Foo / Far / Faz ==> Foo, Far, Faz

Бу / Бар / Баз ==> Бу, Бар, Баз

Когда я прихожу, чтобы запросить это поле, я получаю результаты, которых я не ожидал. Используя запрос:

+data:Foo/Bar

Я ожидал бы, что это будет соответствовать документам, которые содержат и Foo и Bar, но вместо этого он возвращает документы, которые содержат по крайней мере Foo или Bar, забивая их с обоими терминами выше. Кроме изменения запроса так, что он напоминает:

+data:Foo +data:Bar

есть ли способ изменить поведение так, чтобы вместо сопоставления всех трех моих примеров документов он совпадал только с одним?

Этот эксперимент был выполнен с использованием ночных сборок Solr 4.0.

Спасибо

1 Ответ

3 голосов
/ 20 декабря 2011

Вы можете установить оператор по умолчанию равным AND в schema.xml, который сделает все запросы поиском AND.

http://wiki.apache.org/solr/SchemaXml#Default_query_parser_operator

Вы также можете изменить его для каждого запроса, добавив q.op = AND к URL-адресу solr.

http://solrhost/solr/select?q=solr+lucene&q.op=AND

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...