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

发布于 2024-10-09 19:25:02 字数 494 浏览 5 评论 0原文

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

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

I would like to use the position/index found by the Match...Against fulltext search in mysql to return some text before and after the match in the field. Is this possible? In all the examples I have seen, the Match...Against returns a score in the select instead of a location or position in the text field of which is being searched.

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;   

This will give me a field and a score...but I would like an index/position instead of (or along side) a score.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千纸鹤带着心事 2024-10-16 19:25:02

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

我希望这是有道理的。

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

直流

Fulltext searching is a scoring function. its not a search for occurrence function. In other words the highest scoring result may not have a starting position for the match. As it may be a combination of weighted results of different matches within the text. if you include query expansion the search for word/s may not even appear in the result!
http://dev.mysql.com/doc/refman/5.0/en/fulltext-query-expansion.html

I hope that makes some sense.

Anyway your best bet is to take the results and then use some text searching function to find the first occurrence of the first matching word. My guess is that would be best suited to a text processing language like perl or a more general language like php or what ever language you are using to run the query.

DC

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文