数据库
首页 > 数据库> > MySQL全文搜索能否返回索引(位置)而不是分数?

MySQL全文搜索能否返回索引(位置)而不是分数?

作者:互联网

我想使用Match找到的位置/索引…反对mysql中的全文搜索,以返回字段中匹配前后的一些文本.这可能吗?在我看到的所有示例中,Match … Against在select中返回一个分数,而不是在正在搜索的文本字段中的位置或位置.

SELECT 
  random_field, 
  MATCH ($search_fields) 
    AGAINST ('".mysql_real_escape_string(trim($keywords))."' IN BOOLEAN MODE) 
      AS score
FROM indexed_sites 
WHERE 
  MATCH ($search_fields) 
    AGAINST ('".mysql_real_escape_string($keywords)."' IN BOOLEAN MODE) 
ORDER BY score DESC;   

这将给我一个字段和一个分数……但我想要一个索引/位置而不是(或旁边)得分.

解决方法:

全文搜索是一种评分功能.它不是搜索发生功能.换句话说,得分最高的结果可能没有比赛的起始位置.因为它可能是文本中不同匹配的加权结果的组合.如果你包含查询扩展,搜索word / s可能甚至不会出现在结果中!
http://dev.mysql.com/doc/refman/5.0/en/fulltext-query-expansion.html

我希望这是有道理的.

无论如何,你最好的选择是获取结果,然后使用一些文本搜索功能来查找第一个匹配单词的第一次出现.我的猜测是,它最适合像perl这样的文本处理语言或像php这样的更通用的语言,或者你用来运行查询的语言.

DC

标签:mysql,full-text-search,match,against
来源: https://codeday.me/bug/20190710/1420977.html