mongodb полнотекстовый поиск отрицательные термины

В настоящее время я работаю над поисковой системой. Я делаю это с php / mongodb.

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

Вот пример: я ищу "Pizza -restaurant" (Я француз, но слова прозрачны)

С отрицательными условиями, есть много документов с "рестораном", которые удаляются.

Но есть еще 3 или 4 документа с "рестораном" внутри.

В этих документах "ресторан" похож на любые другие слова. Он разделен пробелом, без специального символа. Это написано в верхнем регистре. (Но заглавные буквы, кажется, не причина)

Если это помогает, строка отладки "[queryDebugString] => pizza||restaur||||"И вот пример документа, который не удаляется:

BAR - RESTAURANT LE ST MICHAL CAMPAGNARD, BAR - RESTAURANT LE ST MICHAL

или же

HOTEL - RESTAURANT rd 1120 19460 auberge de la route Spécialités gastronomiques du terroir

Редактировать: вот команда для поиска:

$result = $this->_dbLocal->command(
            array(
            'text' => 'boutique', //this is the name of the collection where we are searching
                'search' => $q, //the string to search
                // 'language' => 'french',
                'limit' => 500,
        )
    );

РЕДАКТИРОВАТЬ: с некоторым тестом, отрицательные условия хорошо работает с language: none в поиске и указателе. Но с language: noneмой поиск больше не использует стоп-слов, которые были действительно полезны...

Есть ли способ использовать стоп-слова для всего, кроме отрицательных терминов?:/

Спасибо за ваше время!

Жиль.

1 ответ

Решение

Перекрестная ссылка на эту тему с потоком mongodb-user по той же проблеме. Это было подтверждено как ошибка в SERVER-11994 и с тех пор было исправлено в 2.5.5 и следующем выпуске 2.6.

Другие вопросы по тегам