В 1000-й раз про создание поиска на сайте...

Asar

Новичок
В 1000-й раз про создание поиска на сайте...

Делаю поиск по каждому нужному полю таблицы - вопросов нет.
Но, если поисковый запрос содержит слова из разных полей в одной строке - написанная мною команда уже ничего не найдет.

Т. е. таблица:

Поле1 Поле2 Поле3
Очень Клевый Паровоз

По словам Очень или Паровоз записи будут найдены, а по словосочетанию Очень Клевый Паровоз - нет.
Вопрос: как можно искать по нескольким полям в одной строке? Может, объединять их как-нибудь временно или еще что...
 

Фанат

oncle terrible
Команда форума
Asar
словосочетания не хранят в разных полях.
определись, что ты ищешь - и после этого спланируй базу
а после этого - делай поиск.
 

Asar

Новичок
2asm: Зачем? Я же ищу словосочетание в первую очередь.

2Фанат: Полное название товара: Пирожок гранулированный Суперхлебопродукт А1 338.716. Естественно, марка, модель, кодировка и т. п. - все разные поля, а человек вполне может искать сразу полное название. Как же в таком случае не хранить в разных полях, если, например, часто нужен вывод только одной марки и т. д.?
 

alexhemp

Новичок
Asar

В таком случае нужен не поиск по БД а индексация самих страниц сайта (ибо одна страница может собираться из многих таблиц и записей и точно сказать какие данные будут иметь какой адрес - трудно)

Напиши "паука" который будет обходить сайт по HTTP, разбивать все на слова, создавать инвертированный индекс и потом ищи по нему :) - Это будет самый сложный, но самый правильный в твоем случае путь.
 

Asar

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

baev

‹°°¬•
Команда форума
Зачем? Я же ищу словосочетание в первую очередь.
А чтоб в запросе делать типа:
"WHERE pole1 LIKE %slovo1% OR pole1 LIKE %slovo2% OR pole2 LIKE %slovo1% OR pole2 LIKE %slovo2%"
 

Asar

Новичок
Можно и так... Но хотелось бы нечто вроде поля или еще чего создать временного/постоянного, где бы хранилось типа филд1+филд2+филд3, и оттуда уже дергать... Хотя бы релевантности ради...
 

Alexandre

PHPПенсионер
baev
в твоем запросе на Очень Клевый Паровоз
выдаст словосочетания и с Оченьи с Клевый и с Паровоз
а надо только по релевантности: Очень Клевый Паровоз

самый простой способ: создание таблицы релевантностей
или составного индекса...
 

Asar

Новичок
самый простой способ: создание таблицы релевантностей
Т. е. таблицы, где будет поле, объединяющее несколько полей основной таблицы, по которым хотелось бы искать?

-~{}~ 23.05.05 15:14:

ALTER TABLE `goods` ADD FULLTEXT (
`Code` ,
`Model` ,
`ToolType` ,
`Description`
)
Это есть составной индекс или стоит все же почитать гору литературы на эту тему?
 

Torio

Guest
bgm
Вот за ссылочку спасибо! :)
хоть с БД разберусь...
 
Сверху