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.