пойск по labels с интерфейсом

WMix

герр M:)ller
Партнер клуба
есть желание лопатить таблицу по лэйблам. те существует 2 таблички одна основная ID,NAME
и вторая labels - на каждую строчку основной таблицы приходятся несколько лэйблов ID,PARENT,LABEL

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

может кто знает готовое независимое решение или библиотеку ?
 

radioheaded

PHP нуб
Приведи пример исходных данных и желаемого результата. Пока не очень понятно, но попахивает Сфинксом.
 

md5S

Это вам не это.
Приведи пример исходных данных и желаемого результата. Пока не очень понятно, но попахивает Сфинксом.
Не понятно где вы там запашок сфинкса увидели? т.к. все делается нативно и просто как "две копейки".
 

WMix

герр M:)ller
Партнер клуба
исходных данных еще нет, но это будет таблица таможенных кодов. задача быстро выискивать правильный код. идея была разбить описание на слова тэги и слепить близкий к удобному интерфейсик. те. это требует минимум затрат. и польза еще не извесная.
таможенный код это 9-12 значный номер

http://www.tks.ru/db/tnved/tree

6505001000; Шляпы и прочие головные уборы трикотажные машинного или ручного вязания, или изготовленные из цельного куска (но не из полос) кружева, фетра или прочего текстильного материала, с подкладкой или без подкладки или с отделкой или без отделки; сетки для волос из любого материала, с подкладкой или без подкладки или с отделкой или без отделки: из фетра мехового или фетра из шерсти и меха, изготовленные из шляпных заготовок, колпаков или плоских заготовок товарной позиции
 

md5S

Это вам не это.
WMix продемонстрируйте что вы имеете в примерах? и где у вас не получается? а то повторное описание задачи не отличается от первого описания и в ровном счете несет в себе нулевую смысловую нагрузку.
 

WMix

герр M:)ller
Партнер клуба
если я буду писать, у меня все получится. задача не писать, а взять готовый инструмент и попробывать, имеет ли вообще смысл писать, bzw. оптимировать!
 

WMix

герр M:)ller
Партнер клуба
Ragazzo
только никому не говори, что не смог-бы написать такой поисковик
 

Тугай

Новичок
Если имеется ввиду fuzzy search как в Sublime Text 2, то алгоритм самому бы хотелось увидеть, там круто. :)

Если ограничится поиском просто по началу слов входящих в текст, то можно например так:
1. В строке поиска все кроме букв и цифр меняем на пробелы:
PHP:
$q = preg_replace("%[^0-9a-zA-Zа-яА-Я\s]%iu", " ", $_REQUEST['search']);
$q = preg_replace("%\s{2,}%u", " ", $q);
2. Теперь пробел это разделитель получаем слова:
PHP:
$searchwords = explode(" ",$q);
3. По словам формируем наше условие:
PHP:
$w = '1=1';
foreach($searchwords as $key => $value) {
	$searchword = mb_strtoupper($searchwords[$key]);
	$w .= ' and (';
	$w .= 'ucase(label) rlike \'([^0-9a-zA-Zа-яА-Я]+' . $searchword . '.*|^' . $searchword . '.*)\'';
	$w .= ')';
}

$query = 'select * from table2 where ' . $w . ' limit 15;
...
Теперь можем написать: шляпы машинного сетки
и найдет 6505001000.

match against в MyIsam не удобный, нельзя влиять на разделители (например, не найдет СО-2, если в тексте СО 2).
Сфинкс - наврено да, но в небольших проектах - это сильно круто. :)
 

md5S

Это вам не это.
WMix с вашим описанием рекомендую писать самому, тем более работа простая. При дальнейшем рефракторинге, при усложнении функциональности можно будет уже задуматься о сфинксе и подобных ему.
 

WMix

герр M:)ller
Партнер клуба
Тугай
спасиб, я всеже надеялся на готовую штучку. чтоб время на эту хрень не тратить. нашел модуль для юмлы который можно использовать, все одно быстрее чем писать.

кстати очень прикольно. медленно не будет?
PHP:
' and ( ucase(label) rlike \'([^0-9a-zA-Zа-яА-Я]+' . $searchword . '.*|^' . $searchword . '.*)\' )'
 

Ragazzo

TDD interested
WMix
да, не, просто фраза так звучала... пропитанная мудростью и оптытом чтоли :D дело мастера боится и т п ;)
p.s. не буду больше тут оффтопить :)
 

Тугай

Новичок
WMix
Порядка 20000 записей, при вводе задержка 250мс перед отправкой ajax'a, отзывается через 1-2 сек, вполне нормально.
 
Сверху