2017-09-22 81 views
-1

我正在使用MyISAM引擎和全文搜索。我在表中有一个text列。
假设有这样的要求的句子:

“我们有两个蓝色的车”

和我在text列这些记录。通过全文搜索搜索一个句子及其组合

  • 我们有两个蓝色车
  • 我们
  • 蓝色
  • 汽车
  • 我们
  • 两个蓝色
  • 我们有两个
  • 蓝色汽车

...以及与上述类似的任何组合。

我需要一个完整的文本搜索查询返回在与给定的顺序结果:

1 =>我们有两个蓝色的汽车
2 =>我们有两个蓝色
3 =>我们有两个
4 =>我们有
5 =>我们
5 =>有
5 =>双
5 =>蓝色
5 =>汽车

之后的订单并不重要,因此我多次重复。我尝试多个全文模式,但订单是基于id(主键)列

任何帮助表示赞赏,谢谢。

回答

0

最后我做了这个查询,但我不确定性能。

SELECT tbl.*, 
MATCH(text) 
AGAINST (' 
("We have two blue cars") 
("We have two blue") 
("We have two") 
("We have") 
We have two blue cars' 
IN BOOLEAN MODE) as score FROM tbl where 

MATCH(text) 
AGAINST (' 
("We have two blue cars") 
("We have two blue") 
("We have two") 
("We have") 
We have two blue cars 
' IN BOOLEAN MODE) 
ORDER BY score DESC ;` 



它返回我下面的结果,并采取有关0.0706秒有9240条记录。

0

你可以使用类似下面的东西,它将是有用的,以获得您想要的输出。

 Select column 
    from table 
    WHERE `TEXT` LIKE '%We%' and 
    `TEXT` LIKE '%have%' and 
    `TEXT` LIKE '% two%' and 
    'TEXT' LIKE '%blue%' and 
    'TEXT' LIKE '%cars%'; 
+0

谢谢,但这不是全文搜索。我需要尽可能快地从数据库中进行搜索和获取,并且据我所知,它可以通过全文搜索获得。 – HosSeinM

+0

请尝试阅读以下链接https://docs.microsoft.com/en-us/sql/relational-databases/search/full-text-search –

+0

Chetan如此处所述https://docs.microsoft.com/en- us/sql/relational-databases/search/full-text-search#like运算符在速度方面有一些特殊的限制。 – HosSeinM