MySQL全文搜索可以返回索引(位置)而不是分数吗?

Nat*_*ner 5 mysql full-text-search against match

我想使用 Match...Against fulltext search in mysql 找到的位置/索引来返回字段中匹配前后的一些文本。这可能吗?在我看到的所有示例中,Match...Against 返回选择中的分数,而不是正在搜索的文本字段中的位置或位置。

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;   
Run Code Online (Sandbox Code Playgroud)

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

Dev*_*ris 2

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

我希望这是有道理的。

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

直流