Mysql 我怎样才能做到这一点;";在Sphinx查询中按第一个字母列出时跳过

Mysql 我怎样才能做到这一点;";在Sphinx查询中按第一个字母列出时跳过,mysql,sphinx,Mysql,Sphinx,我需要用Sphinx复制以前用mysql完成的结果 我构建了一个包含3个示例字段的索引: 艺人名称|歌曲名称|歌词文本 注意*需要澄清的是,最初的数百万个表是作为mysql表(完全清空并重新导入的),它们首先导入mysql。索引源是将这些表链接在一起的单个查询 通过使用sphinxql命令,我需要实现以下目标: 匹配并按字段“artistname”和“songname”的第一个字母列出,如果找到则忽略“the” 按照这些规则,以第一个字母“w”列出的内容包括(示例): 惠特尼休斯顿 谁 结果需要

我需要用Sphinx复制以前用mysql完成的结果

我构建了一个包含3个示例字段的索引:

艺人名称|歌曲名称|歌词文本

注意*需要澄清的是,最初的数百万个表是作为mysql表(完全清空并重新导入的),它们首先导入mysql。索引源是将这些表链接在一起的单个查询

通过使用sphinxql命令,我需要实现以下目标:

匹配并按字段“artistname”和“songname”的第一个字母列出,如果找到则忽略“the”

按照这些规则,以第一个字母“w”列出的内容包括(示例):

  • 惠特尼休斯顿
  • 结果需要按权重排序

    第一个字母“B”的列表将产生按重量计算的结果:

  • B/单字母/100
  • B-T/单字母+90后的非字母符号
  • B为蓝色/单字母+空格/80
  • 百家乐/单字首字母/70
  • 坏宗教/几个单词的第一个字母/60
  • B/不计算“The”/50
  • B.Y.Z/单字母+非字母符号(不计算“/40
  • B 2 B/单字母+空格不计算“The”/30
  • 单个单词的Boyzz/首字母不包括“The”/20 10.蓝色男孩/几个单词的第一个字母不包括“The”/10
  • ===================================================

    可以在任何字段上进行全文搜索

    我们可以选择什么来控制搜索中的公差(字符串中可能错位/丢失的字母数)

    搜索“披头士”的示例如下:

    匹配“披头士” 将与“披头士”相匹配

    =================================================== 示例搜索字符串“don”

    按重量计算的结果:

  • 唐/体重100-第一位单字-完美匹配/
  • Don a tello/weight 90-第一个位置几个单词/
  • Mon Don Atel O/weight 80-非第一位置多个单词/
  • Monade Don/weight 70-最后位置几个字/
  • 我知道这看起来很复杂,但所有这些都转化为几个问题。我只是没有必要的专业水平来制作它


    最后但并非最不重要的一点是,我应该如何使用哪些选项建立索引,以便在处理这些查询时使用sphinx的全部功能?

    在提交全文匹配之前,您需要转换文本。从haystack中删除模式“^the/s”,让引擎计算相关性分数,然后打印未修改的列值。这需要在不更改原始值的情况下完成。每周数百万行更新使得这不可能提前完成。我想知道有一个选项可以在索引或预查询时执行。Sphinx有一个专用的停止字功能,可能会有所帮助。Mysql也有一个停止词列表,但它是硬编码的,搜索web以查找使用的单词列表。对其余的问题不太清楚,你的帖子很有意思;drI感谢所有基于假设而非事实的评论。谢谢