首页 文章

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

提问于
浏览
4

我想使用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;

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

1 回答

  • 1

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

    我希望这是有道理的 .

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

    DC

相关问题