【问题标题】:Unexpected TOK_IDENT in Sphinx QuerySphinx 查询中出现意外的 TOK_IDENT
【发布时间】:2014-06-26 13:44:39
【问题描述】:

我正在将搜索逻辑从使用基本模型范围和地理编码器 gem 迁移到使用 Thinking Sphinx。

除了地理搜索逻辑之外,我已经很好地迁移了所有逻辑。当我运行搜索时,我收到以下错误:

解析错误:Sphinx expr:语法错误,'纬度,经度附近的意外TOK_IDENT)

它尝试运行的查询是:

SELECT GEODIST(0.9037681385969557, 0.08613329012956664, latitude, longitude) AS geodist, * FROM refinery_marketplaces_business_core WHERE MATCH('consultants') AND sphinx_deleted = 0 ORDER BY geodist ASC LIMIT 0, 2

以下是相关摘录:

索引定义:

has 'RADIANS(latitude)', :as => :latitude,  :type => :float
has 'RADIANS(longitude)', :as => :longitude, :type => :float
group_by 'latitude', 'longitude' # Needed for PostgreSQL

控制器:

@businesses = Business.search params[:keywords], :geo => [0.9037681385969557, 0.08613329012956664], :order => "geodist ASC"

我可以在这里找到的唯一两个类似的帖子是:

这两者基本上都是人们在错误的模型上调用搜索的结果 - 我在正确的模型上调用它。

以下是所有游戏的版本:

  • Ruby 2.0.0p247
  • Rails 3.2.14
  • 思考狮身人面像 3.1.1
  • Sphinx 2.1.4(已安装 brew)
  • Postgres 9.3.2(已安装 brew)

更新:

我发现您可以在阅读这篇文章后将 SphinxQL 查询输入到 Sphinx CLI:Connect to SphinxQL through Linux command-line

mysql -P9306 --protocol=tcp --prompt='sphinxQL> '

运行后的一些观察:

  • 删除 GEODIST() 引用查询返回正常
  • 运行简单的 SELECT * 查询显示纬度和经度不在索引中
  • 在 psql 中运行 \d+ refinery_marketplaces_businesses 显示它们是表上的字段:
    • 纬度 |双精度
    • 经度 |双精度
  • 这两个字段都包含在rake ts:rebuild 生成的 sql_query 中,但它们不会显示在生成的索引中。

非常感谢任何帮助!

谢谢

【问题讨论】:

    标签: ruby-on-rails sphinx thinking-sphinx


    【解决方案1】:

    我设法对此进行了排序,因此包括其他遇到此错误消息的人的答案。

    错误:unexpected TOK_IDENT 基本上表示查询中引用的字段在索引中不存在。

    验证索引中内容的最佳方法是使用以下命令运行 Sphinx CLI:

    mysql -P9306 --protocol=tcp --prompt='sphinxQL> '
    

    然后运行 ​​SELECT * 查询,例如:

    SELECT * FROM your_index_core WHERE sphinx_deleted = 0 LIMIT 0, 20;
    

    从这里您可以看到顶部索引中的字段。

    我无法弄清楚为什么它们不存在于索引中 - 我多次运行 rake ts:rebuild 无济于事。最后我不得不停止searchd,手动删除配置文件和索引,从头开始重建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多