|
|
|
| Как создать запрос с полнотекстовым поиском, если нужно найти множество слов в одном запросе?
Может можно вложить запрос в сам полнотекстовый поиск?
Select ....MATCH (name) AGAINST ('Select ...FROM....')...FROM...
|
| |
|
|
|
|
|
|
|
для: xpom
(13.02.2012 в 20:07)
| | Погодите, полнотекстовый поиск работает так, что ему можно скармливать любое количество слов - он будет искать наиболее релевантное соответствие, просто подставляйте в AGAINST строку со словами через пробел (только имейте в виду, что порядок имеет значение, как в поисковых системах). | |
|
|
|
|
|
|
|
для: cheops
(13.02.2012 в 20:13)
| | немножко не так нужно. Есть массив слов, которые нужно найти по очереди, т.е. сравнить, если совпадает с какими то словами выводить их id, чтобы в цикл запрос к базе с полнотекстовым поиск не заносить... | |
|
|
|
|
|
|
|
для: xpom
(13.02.2012 в 21:30)
| | Ммм... не очень пока понятно. Т.е. есть набор слов и мы должны найти соответствия им по отдельности? Релевантность тут я так понимаю уже значения не имеет? | |
|
|
|
|
|
|
|
для: cheops
(14.02.2012 в 12:56)
| | Да, да, точнее набор фраз(два, три слова)...и нужно найти им соответствие по отдельности, по одному полю в таблице, каждая (точнее там будим выбирать еще с условием WHERE, поле должно быть равным определенному значению)строка может соответствовать одному словосочетанию из набора...
Наверное без вложения запроса в цикл программы, не обойтись...
Релевантность не имеет значения, нужна точность совпадения.
Да и в таблице может оказаться две строки, одна если совпадет, то полнотекстовый, я так понимаю не найдет...
Может сделать LIKE-ом? Разбить словосочетания на слова и искать, если есть совпадение слова то выводить...много ли я потеряю в скорости, если LIKE в цикл программы помещу? | |
|
|
|
|
|
|
|
для: xpom
(14.02.2012 в 13:44)
| | Если вы грубо говоря сравниваете одно слово с другим, а не ищите по огромному массиву текста, то лучше действительно использовать LIKE. | |
|
|
|