|
|
|
| Есть вот такой запрос :
"select name from table where match(name)against('$s')"
| . Но этот запрос ищет только в 1 столбце.
Можно ли написать запрос,осуществляющий полнотекстовый поиск сразу по нескольким столбцам одной таблицы, или MySQL не поддерживает такую возможность?
Таблица создана вот так
CREATE TABLE table
(
column1 VARCHAR (255),
column2 TEXT,
FULLTEXT (column1),
FULLTEXT (column2)
)
|
И этот запрос не работает:"select column1 from table where match(column1,column2)against('$s')" | |
|
|
|
|
|
|
|
для: beowulf
(23.08.2005 в 09:49)
| | Можно, но для этого необходимо организовать индекс по двум столбцам
CREATE TABLE table
(
column1 TINYTEXT,
column2 TEXT,
FULLTEXT (column1,column2)
)
|
Запрос в этом случае будет выглядеть следующим образом
"select name from table where match(column1,column2) against ('$s')
|
Однако, вы уже не сможете воспользоваться запросом
"select name from table where match(column1) against ('$s')
|
Для этого, необходимо будет ввести ещё один индекс
CREATE TABLE table
(
column1 TINYTEXT,
column2 TEXT,
FULLTEXT (column1,column2),
FULLTEXT (column1)
)
|
И так для каждой комбинации столбцов, в которых вы хотите осуществлять полнотекстовый поиск. | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 13:48)
| | А я нашел еще вот такой код
"SELECT *, MATCH column1 AGAINST ('$search')+MATCH column2 AGAINST('$search')
as relev FROM table HAVING relev>0 ORDER BY relev DESC"
|
| |
|
|
|