我有一个MySQL-query由FULLTEXT
-indexes组成,因为我需要一个相关性排序。 缺点是,我需要有模式匹配像MySQL-FULLTEXT模式匹配
SELECT * FROM table WHERE colum LIKE %word%
有没有办法在FULLTEXT
-searches来实现这一点?
我有一个MySQL-query由FULLTEXT
-indexes组成,因为我需要一个相关性排序。 缺点是,我需要有模式匹配像MySQL-FULLTEXT模式匹配
SELECT * FROM table WHERE colum LIKE %word%
有没有办法在FULLTEXT
-searches来实现这一点?
这里是你如何使用MySQL full Text search:
在这里,您不必为打破更大的输入字符串转换成数组与每个单词进行比较。
请参考下面的例子来写自己:
是双引号括起来(““”)字符的短语匹配的
只是字面上包含该短语的行,因为它是键入
我想解释你有关Boolean Full Text Search;不过,我劝你请通过Full Text Search using Query Expansion也
让我们看看示例表:
mysql> select * from articles;
+----+-----------------------+------------------------------------------+
| id | title | body |
+----+-----------------------+------------------------------------------+
| 1 | PostgreSQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+-----------------------+------------------------------------------+
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('"database comparison"' IN BOOLEAN MODE);
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+-------------------+------------------------------------------+
订购事宜,当时的话被引用:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('"comparison database"' IN BOOLEAN MODE);
Empty set (0.01 sec)
当我们去掉引号,它将搜索行,包含单词“数据库”或“比较”:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('database comparison' IN BOOLEAN MODE);
+----+---------------------+------------------------------------------+
| id | title | body |
+----+---------------------+------------------------------------------+
| 1 | PostgreSQL Tutorial | DBMS stands for DataBase ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+---------------------+------------------------------------------+
顺序并不重要,现在:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('comparison database' IN BOOLEAN MODE);
+----+---------------------+------------------------------------------+
| id | title | body |
+----+---------------------+------------------------------------------+
| 1 | PostgreSQL Tutorial | DBMS stands for DataBase ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+---------------------+------------------------------------------+
如果我们想要得到的行,包含无论是单词“的PostgreSQL”或短语“数据库的比较”,我们应该用这个请求:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('PostgreSQL "database comparison"' IN BOOLEAN MODE);
+----+---------------------+------------------------------------------+
| id | title | body |
+----+---------------------+------------------------------------------+
| 1 | PostgreSQL Tutorial | DBMS stands for DataBase ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+---------------------+------------------------------------------+
确保,这样的词语,你正在搜索,不在list of stopwords中,那些被忽略。
在全文搜索中,您可以使用'*'进行通配符搜索。所以说你有'aabbbbcc,bbbb,bbbbxyz'的数据,你可以使用布尔模式作为匹配(列)针对('bbbb *'IN布尔模式)' – 2015-03-02 10:43:17