Поиск Solr игнорируя первое слово - PullRequest
0 голосов
/ 22 февраля 2012

Я осмотрел SO и другие места в Интернете, но не нашел ничего конкретного для моей проблемы. Мне было интересно, кто-нибудь еще испытал это? И как они решили?

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

Каждый документ моего индекса представляет одного человека и имеет индексированное поле «имя».

<field name="name" type="string" indexed="true" stored="true" required="true" />

Что должно произойти:

Когда я набираю: «Брюс Роб», он должен вернуть документ «Брюс Робертсон».

Что происходит:

Когда я набираю 'Bru', возвращает , возвращает 'Bruce Robertson'. Но как только я начну второе слово, например «Брюс Роб» начнет возвращать результаты, начинающиеся с «Роб» - полностью игнорируя слово, которое было раньше.

Я использую клиентскую библиотеку PHP. Сгенерированный запрос выглядит так:

fq=type%3Aperson&sort=id+desc&wt=json&json.nl=map&q=name%3Abruce+rob%2A&start=0&rows=3

Любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ: PHP код

$options = array('fq' => "type:person",'sort' => 'id desc');
$results = $this->solr->search('name:' . $val . '*', 0, 3, $options);

1 Ответ

1 голос
/ 22 февраля 2012

Он ищет Брюса в поле имени name:bruce, но, так как rob не определен с именем поля, он будет искать rob* в поле по умолчанию defaultSearchField, определенном в вашей схеме.

...