Pracowałem z Sql Server w przeszłości i używałemjest to bardzo fajna funkcja o nazwie Wyszukiwanie pełnotekstowe Sql. Teraz muszę współpracować z MySql. Czy ktoś może mi powiedzieć, co jest równoważne wyszukiwaniu pełnotekstowemu w MySql? Używam bezpłatnej wersji MySql, a nie wersji komercyjnej. Jeśli nie, co jeszcze możemy zrobić, aby naśladować wyszukiwanie pełnotekstowe i pokonać ograniczenia operatora LIKE?
Z góry dziękuję :)
Odpowiedzi:
3 dla odpowiedzi № 1Zobacz dokumentację dotyczącą obsługi wyszukiwania pełnotekstowego w mysql:
http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
Będziesz chciał zastosować indeksy pełnotekstowe do kolumn, aby umożliwić wyszukiwanie pełnotekstowe w tych kolumnach. Zauważ, że mysql obsługuje tylko indeksowanie pełnotekstowe w tabelach MyISAM.
Jako przykład, na wypadek gdyby powyższy link przestał działać, zobacz pełny przykład z dokumentacji:
mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles (title,body) VALUES
-> ("MySQL Tutorial","DBMS stands for DataBase ..."),
-> ("How To Use MySQL Well","After you went through a ..."),
-> ("Optimizing MySQL","In this tutorial we will show ..."),
-> ("1001 MySQL Tricks","1. Never run mysqld as root. 2. ..."),
-> ("MySQL vs. YourSQL","In the following database comparison ..."),
-> ("MySQL Security","When configured properly, MySQL ...");
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body)
-> AGAINST ("database" IN NATURAL LANGUAGE MODE);
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
+----+-------------------+------------------------------------------+
Ref http://dev.mysql.com/doc/refman/5.1/en/fulltext-natural-language.html
2 dla odpowiedzi nr 2
Na MyISAM
stoły, MySQL
obsługuje FULLTEXT
indeksy:
CREATE TABLE mytable (id INT, caption TEXT, content TEXT, FULLTEXT KEY fx_mytable_caption_content (caption, content)) ENGINE=MyISAM;
SELECT *
FROM mytable
WHERE MATCH(caption, content) AGAINST ("my search query")
1 dla odpowiedzi nr 3
Możesz utworzyć indeks pełnotekstowy w jednej lub więcej kolumnach. Następnie można użyć kwerend wyszukiwania pełnotekstowego do zapytania tabeli. Widzieć Indeks pełnotekstowy MySQL i Funkcje wyszukiwania pełnotekstowego MySQL.
Typowe zapytanie wygląda następująco:
SELECT * FROM books
WHERE MATCH (title, summary) AGAINST ("harry potter")
ORDER BY MATCH (title, summary) AGAINST ("harry potter")
LIMIT 0, 10