|
|
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Помогите правильно сделать поиск. Есть 5 таблиц. 1. subsections - таблица категорий. Структура ID, NAME 2. brands - таблица брендов (например, Apple, Nokia). Структура: ID, NAME, ID_SUBSECTIONS (это ID категории) 3. goods - таблица товаров (например, Apple iPhone 5). Структура: ID, NAME, BRAND_ID (это ID бренда), subsection_id (это ID категории) 4. brands_alternative - таблица с альтернативными названиями бренда. Например: Aple, Эппл. Т.е. данная таблица содержит варианты названий реального бренда. Стуктура: ID, NAME, BRAND_ID. 5. subsections_alternative - таблица с альтернативными названиями категории. Например, для категории "Сотовые телефоны" можно привязать названия "Мобильный телефоны", "Смартфоны". Т.е. данная таблица содержит варианты названий реальной категории. Стуктура: ID, NAME, SUBSECTION_ID. Допустим человек ищет фразу "телефон Aple iphone 5s" Нужно вывести результаты в следующем порядке. 1. Если слово из искомой фразы встретилось в названии категории (subsections) или в названии альтернативной категории (subsections_alternative), то сначала вывести список категорий. 2. Если слово из искомой фразы содержится в названии товара (goods) и названии бренда (brands) или альтернативы бренда (brands_alternative), то вывести список таких товаров. 3. Если слово из искомой фразы содержится просто в названии товара (goods), то вывести товары. 4. Если слово из искомой фразы содержится просто в названии бренда (brands) или в его альтернативном названии (brands_alternative), то вывести товары с этим брендом. Важно, чтобы приоритет вывода был согласно списку 4х пунктов Выше, т.е. самый приоритетный вариант - 1, затем 2, потом 3 и 4. Нужно также выводить товары из пунктов 2-4 так, чтобы они не повторялись. Т.е. если товар нашелся по пункту 2, то понятно, что он найдется и в пункте 3 или 4, но повторно в результат поиска его вносить не надо. Готов оплатить работу, если она окажется сложной. Просто очень нужна помощь специалиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 10:30:55 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
igramnet, Видимо, раз "слово встретилось", то нужен полнотекстовый поиск, т.е. полнотекстовый индекс. А далее уже — логика поиска, твоя, ее надо программировать. Если не нужно полное oltp и не нужно прямо вот так сразу все искать, что добавляют, рекомендую использовать внешние инкассаторы, например, solr. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 11:11:03 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
MasterZivigramnet, Видимо, раз "слово встретилось", то нужен полнотекстовый поиск, т.е. полнотекстовый индекс. А далее уже — логика поиска, твоя, ее надо программировать. Если не нужно полное oltp и не нужно прямо вот так сразу все искать, что добавляют, рекомендую использовать внешние инкассаторы, например, solr. Спасибо за совет. Боюсь с solr разбираться буду долго. Вы бы не могли помочь на готовом примере? Я бы был признателен за вознаграждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 12:03:17 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
igramnet Боюсь с solr разбираться буду долго. Вы бы не могли помочь на готовом примере? Я бы был признателен за вознаграждение. А тут быстро и примером а ля hello world не отделаетесь, эту логику будете еще 100 раз править прежде чем заработает более менее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:27:33 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
igramnet, сделайте вьюху, в которой будут формироватся "шаблоны поиска" и ищите по ней типа этого Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. и дальше 1 Код: sql 1. 2. 2 Код: sql 1. 2. 3 Код: sql 1. 2. зы возвращаясь к сабжу Как правильно сделать поиск по 5 таблицам. лучше будет завести спец.табличку под эти "шаблоны" (а не всё время их генерить во вью), которую "актуализировать" (дополнять для новых товаров, изменять для изменённых и т.д.) в триггерах тогда можно будет "развернутся" и на перестановки - категория/бренд/модель ==> бренд/модель/категория , ... + на сходные по написанию "руские" буквы - '%телефон [AА][рp]l[eе] i[pр]h[оo]n[eе] 5s' ... может ещё что-то ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:47:26 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
igramnetMasterZivigramnet, Видимо, раз "слово встретилось", то нужен полнотекстовый поиск, т.е. полнотекстовый индекс. А далее уже — логика поиска, твоя, ее надо программировать. Если не нужно полное oltp и не нужно прямо вот так сразу все искать, что добавляют, рекомендую использовать внешние инкассаторы, например, solr. Спасибо за совет. Боюсь с solr разбираться буду долго. Вы бы не могли помочь на готовом примере? Я бы был признателен за вознаграждение. Помочь с чем, с Solr ? Или с логикой твоего поиска ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:08:29 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
даже так, "получшее" будет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:10:27 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
qwerty112и дальше 1 Код: sql 1. 2. Это не будет работать, если ему действительно надо "если слово из искомой фразы встретилось в". Это обеспечивает только полнотектный поиск. LIKE так искать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:10:50 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
MasterZivigramnetпропущено... Спасибо за совет. Боюсь с solr разбираться буду долго. Вы бы не могли помочь на готовом примере? Я бы был признателен за вознаграждение. Помочь с чем, с Solr ? Или с логикой твоего поиска ? С выполнением задания ;) Нужно поиск допилить так сказать. Я попробую запрос, описанный выше. Но хотелось бы получить квалифицированную помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:58:04 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
это - тоже лишнее qwerty112даже так, "получшее" будет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 17:15:47 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
qwerty112это - тоже лишнее qwerty112даже так, "получшее" будет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Так, запрос получил. А где задавать строку? Например, "Aple Iphone 5s" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 17:48:41 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
Как организовать сам поиск? По данному запросу я получаю таблицу со столбцами для поиска. А что с ней дальше делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 20:52:44 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
igramnetКак организовать сам поиск? По данному запросу я получаю таблицу со столбцами для поиска. А что с ней дальше делать? топик перечитай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 21:10:36 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
qwerty112igramnetКак организовать сам поиск? По данному запросу я получаю таблицу со столбцами для поиска. А что с ней дальше делать? топик перечитай да я понял. Вы предлагаете сделать таблица отдельную, в которой хранить результаты запроса этого большого. И потом по ней искать. Но вопрос в том, что надо получается каждый раз чистить данную таблицу, когда создается или меняется товар в базе (бренд или категория) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 21:54:26 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
igramnetqwerty112пропущено... топик перечитай да я понял. Вы предлагаете сделать таблица отдельную, в которой хранить результаты запроса этого большого. И потом по ней искать. Но вопрос в том, что надо получается каждый раз чистить данную таблицу, когда создается или меняется товар в базе (бренд или категория) ? а этаа, ... ты на чём пишешь ? на пхп ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2013, 22:43:55 |
|
||
|
Как правильно сделать поиск по 5 таблицам.
|
|||
|---|---|---|---|
|
#18+
qwerty112igramnetпропущено... да я понял. Вы предлагаете сделать таблица отдельную, в которой хранить результаты запроса этого большого. И потом по ней искать. Но вопрос в том, что надо получается каждый раз чистить данную таблицу, когда создается или меняется товар в базе (бренд или категория) ? а этаа, ... ты на чём пишешь ? на пхп ? да, на PHP. Я вообще подумал создать таблицу, в которой будут уже заранее всевозможные варианты комбинацией названия, бренда, категории и альтернативных название бренда и категории.... и по ней организовать полнотекстовый поиск. Как думаете, так будет правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 01:17:02 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38456684&tid=1835756]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 325ms |

| 0 / 0 |
