Не ищет по штрих-коду. Модули Search и Barcode.

Главные вкладки

Аватар пользователя Koreychenko Koreychenko 23 мая 2011 в 11:45

Здравствуйте, уважаемые.

Есть сайт. У каждой ноды есть поле field_barcode, которое создается модулем Barcode.
Проблема в том, что стандартный поиск не ищет по этому полю.
Как это победить? Есть мысль изменить модуль Search, чтобы он включал это поле в индекс, но пока ищу более легкие пути, потому что в программизме не особенно силен.

Подскажите, пожалуйста.

Комментарии

Аватар пользователя Koreychenko Koreychenko 24 мая 2011 в 13:50

Я таки это решил. Очень просто. Никакого программирования и установки дополнительных модулей.
Почитать можно тут.

Извращенское решение поиска по неиндексирующемуся контенту http://t.co/r4Y28bo

Аватар пользователя Koreychenko Koreychenko 24 мая 2011 в 14:57

Хм..... проблема перешла в неожиданную плоскость. Как решить пока не знаю.

Если вбиваешь в поиск все 13 цифр штрих-кода, то поиск выводит вообще все материалы у которых есть штрих-код не зависимо от того удовлетворяют они условиям поиска или нет.
Если штрих-код продукта сделать из 6 цифр (например), то все в порядке и выводится только нужный продукт.

Вопрос - в чем может быть проблема? Может это переполнение какое-то, и друпал глючит?

P.S. Эту тему никто не видит или никто не знает? А то я тут сам с собой общаюсь Wink

Аватар пользователя Koreychenko Koreychenko 24 мая 2011 в 15:42

Похоже проблема в том, что модуль Search определяет любое число, которое в него ввели как integer, а не как просто текст строки. Таким образом упираемся в PHP_INT_MAX, который составляет 2 с небольшим миллиарда. Т.е. 10 значное число. Думаю либо как заставить модуль воспринимать строку как строку, либо как увеличить максимальный размер целого числа на сервере Wink

Аватар пользователя dim_nsk dim_nsk 16 августа 2011 в 11:52

в файле search.module можно заменить два раза вызов
$num = is_numeric($word);
на
$num = is_int($word);
т.к. далее к коде идет преобразование к int: $word = (int)ltrim($word, '-0'); поэтому все значения больше PHP_INT_MAX преобразовываются в этот самый PHP_INT_MAX.