5

我想使用 mysql 中 Match...Against fulltext search 找到的位置/索引来返回字段中匹配前后的一些文本。这可能吗?在我看到的所有示例中,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;   

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

4

1 回答 1

2

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

我希望这有点道理。

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

直流

于 2011-01-04T00:40:05.950 回答