Выбор записей по слову

  • Автор темы RedSnake
  • Дата начала

RedSnake

Guest
Выбор записей по слову

Доброго времени суток=)
Не могли бы Вы подсказать, как можно выбрать из таблицы те записи в полях которых встречаеться определенное слово?
 

RedSnake

Guest
Re: Выбор записей по слову

2ForJest не то=)Мне нужно сделать выборку записи из MySQL по слову, которое может содержаться в любом поле=)))
 

ForJest

- свежая кровь
RedSnake
Заведи ещё одно поле, в котором будут данные из всех полей и ищи в нём.
 

lucas

Guest
ForJest

Это компромис между первым и вторым вариантами? :)
 

RedSnake

Guest
хмм...
Fulltext не катит... я не знаю заранее структуру базы и не могу ее естественно менять=(
Остаеться только через Like, но мне он не нравиться...Select тогда будет выглядеть жутко... слов то может быть больше одного=(
 

robocomp

Новичок
RedSnake
Сразу бы писал, что не можешь менять структуру -)
Существует несколько решений.
Первый, которым мы пользуемся сейчас: Берём внешний индексатор полнотекстовый мощный крутой. (Может быть написан самим, как у нас почему-то получилось. МОжет быть взят многосёрч (ацкий ацтой), может быть взят http://lucene.apache.org
) выбираем данные, которые надо проидексировать (у нас, например, выбирается, имя товара, код товара, название производителя, значения свойств (интерфейсы: WiFi, firewire) и кладутся в индексатор вместе с ИД ряда. Потом делается сервис, который ищет в этом индексаторе ИД, а потом по идам уже достаёт из основной бд, которую менять нельзя, строки с найденными ИДАМИ. поиск по идам (если это первичные ключи, то поиск по ним будет быстр достаточно) быстрее чем лайки
2. Частным случаем способа один может быть использование субд с возможностью построения полнотекстовых индексов. например мускуль пойдет.
юерешь, делаешь отдельную таблицу. два поля. -- в одном сложена конкатенация всех текстовый полей, относящихся к искомой строке, во втором -- ид. по текстовому полю строишь индекс полнотекствоый. и все. получается, что всё жжот.
 

Мутник

Новичок
robocomp

интересно, а как будет работать ваш движек при 200.000 товаров в базе?

хочу поиск среди всех... Все эти данные куда то будут передаваться и обрабатываться???

хехехе... ерунда.
 

robocomp

Новичок
Мутник
там сейчас более 1 млн., работает нормально -)
тестировать можно на bolero.ru например
или на ehouse.ru
время пересоздания индексов (всех, полное) менее 10 минут -- точно. Могу узнать реально время.

Да-да, именно, все эти данные будут куда-то передаваться и обрабатывться.
Можно сделать так, чтобы передавались только изменения в реальном времени (как сделать -- отдельный, на мой взгляд, вопрос).

ерунда -- у вас в голове.
данный подоход работает в нашем случае прекарсно. -)
Да, движок, к сожалению, не на пхп написан и вышел достаточно дорого нам. Но описанный мною вариант два вполне дёшев и работоспособен. Ранее, до запуска нашего движка, мы как раз им и пользовались, надо заметить.
Проблема была одна -- переиндексация происходила раз в сутки. Но, не думаю, что покупатели сильно страдалим от этого.
 
Сверху