如何改进mysql自然语言模式的搜索查询?

如何改进mysql自然语言模式的搜索查询?,mysql,sql,Mysql,Sql,这是我的问题 SELECT * FROM myTable WHERE MATCH (name) AGAINST ("Apple M1" IN NATURAL LANGUAGE MODE) 如果我搜索苹果M1作为结果,我会得到橙色M1,然后我会得到苹果M-1的第三个或更多位置——这是我存储的值,我假设应该是第一个 我的问题是:有一种方法可以微调mysql搜索?他们改进mysql自然语言模式搜索的最佳方法是使用。它的功能与自然语言模式搜索相同,但您可以使用其他修改器来微调结果,例如 如果SQL自

这是我的问题

SELECT * FROM myTable WHERE MATCH (name) AGAINST ("Apple M1" IN NATURAL LANGUAGE MODE) 
如果我搜索苹果M1作为结果,我会得到橙色M1,然后我会得到苹果M-1的第三个或更多位置——这是我存储的值,我假设应该是第一个


我的问题是:有一种方法可以微调mysql搜索?

他们改进mysql自然语言模式搜索的最佳方法是使用。它的功能与自然语言模式搜索相同,但您可以使用其他修改器来微调结果,例如


如果SQL自然语言搜索不能获得你需要的结果,我会考虑与并行Lucene数据库(如ElasticSearch.so)进行同步,因为我的数据库中有很多条目,比如[Stry] [DAS] [数字],我应该结合联合二选择吗?我的用户不太可能搜索到准确的字符串,对吗?@Francesco我添加了一些信息,也许它会清除掉它。如果我理解正确,你不需要联合来组合单词,单词是“或”ed(以任何顺序),我的观点是“M1”与“M-1”不同。或者是的。。。有时候最简单的解决方法就在你面前。。。再次感谢!同样,作为参考,你可以在这里看到一个例子(当然除了亚马逊!),产品名称有一个破折号,用户上传或搜索名称时不带破折号dashes@Francesco是的,但这个问题当然不限于破折号。如果有人不知道如何正确拼写单词(例如,一些作者的姓名),全文搜索将无法找到该单词。记住这一点。尤其奇怪的是,当你找不到多个版本(但至少在这里,你可以使用例如
Apple*
)和已知格式的产品编号时,你可能有机会通过手动添加单词的其他版本(在查询或数据库中)来规避这一问题。但是做一个好的“拼写更正”并不是一件小事,我想你通常会用其他搜索引擎来做这件事。
SELECT * FROM myTable 
WHERE MATCH (name) AGAINST (">Apple M1" IN BOOLEAN MODE) 
ORDER BY MATCH (name) AGAINST (">Apple M1" IN BOOLEAN MODE) desc