Здравствуйте, уважаемые.
Есть сайт. У каждой ноды есть поле field_barcode, которое создается модулем Barcode.
Проблема в том, что стандартный поиск не ищет по этому полю.
Как это победить? Есть мысль изменить модуль Search, чтобы он включал это поле в индекс, но пока ищу более легкие пути, потому что в программизме не особенно силен.
Подскажите, пожалуйста.
Комментарии
Я таки это решил. Очень просто. Никакого программирования и установки дополнительных модулей.
Почитать можно тут.
Извращенское решение поиска по неиндексирующемуся контенту http://t.co/r4Y28bo
Хм..... проблема перешла в неожиданную плоскость. Как решить пока не знаю.
Если вбиваешь в поиск все 13 цифр штрих-кода, то поиск выводит вообще все материалы у которых есть штрих-код не зависимо от того удовлетворяют они условиям поиска или нет.
Если штрих-код продукта сделать из 6 цифр (например), то все в порядке и выводится только нужный продукт.
Вопрос - в чем может быть проблема? Может это переполнение какое-то, и друпал глючит?
P.S. Эту тему никто не видит или никто не знает? А то я тут сам с собой общаюсь
Похоже проблема в том, что модуль Search определяет любое число, которое в него ввели как integer, а не как просто текст строки. Таким образом упираемся в PHP_INT_MAX, который составляет 2 с небольшим миллиарда. Т.е. 10 значное число. Думаю либо как заставить модуль воспринимать строку как строку, либо как увеличить максимальный размер целого числа на сервере
в файле search.module можно заменить два раза вызов
$num = is_numeric($word);
на
$num = is_int($word);
т.к. далее к коде идет преобразование к int: $word = (int)ltrim($word, '-0'); поэтому все значения больше PHP_INT_MAX преобразовываются в этот самый PHP_INT_MAX.