|
|
|
|
$arr2 = explode(" ",$slova); // Заносим слова в массив
|
Так нормально находит похожие слова:
... zagolovok LIKE '%$arr2[0]%' ....
|
А когда пытаюсь найти этим оператором точные вхождения слов, то вообще ничего не находит (хотя они в базе точно есть):
... zagolovok LIKE '$arr2[0]' ....
|
| |
|
|
|
|
|
|
|
для: sega_z
(10.05.2012 в 22:44)
| | А зачем? LIKE - это меееееедленный оператор. Когда нужно точное соответствие проверяйте по-простому:
... zagolovok ='$arr2[0]' ...
|
| |
|
|
|
|
|
|
|
для: Sfinks
(10.05.2012 в 22:50)
| | В вашем случае будет сравниваться весь текст заголовка с одним искомым словом.
А нужно, чтобы искомое слово сравнивалось с каждым словом заголовка.
Именно поэтому строка разделена на отдельные слова.
zagolovok LIKE '$arr2[0]' OR zagolovok LIKE '$arr2[1]' OR zagolovok LIKE '$arr2[2]' ....
|
Но так не работает... Или LIKE не может искать точные вхождения? | |
|
|
|
|
|
|
|
для: sega_z
(10.05.2012 в 22:58)
| | zagolovok LIKE '$arr2[0]' - это и есть весь заголовок, а не каждое его слово.
если у вас заголовок = "конь коня коней" а арр2[0] = "кон", то ничего и не найдется. Если ="%кон%", то найдется. А если вам нужно конкретно "коня", то нужно отделить слово от остального текста, но строка все-равно должна описываться полностью. т.е. арр2[0] должно быть = "% коня %". Но т.к. слово может от текста отделяться не только пробелами, но и знаками препинания, переносами строк и прочей ерундой, то для поиска конкретного слова лучше воспользоваться MATCH и регулярными выражениями.
_____
И это тема для форума "MySQL", а не PHP | |
|
|
|