【发布时间】:2023-03-04 19:29:01
【问题描述】:
我实际上正在从事一个 Symfony 项目,我们正在使用 Lucene 作为我们的搜索引擎。 我试图使用 SQLite 内存数据库进行单元测试(我们使用的是 MySQL),但我偶然发现了一些东西。
项目的搜索引擎部分使用 Lucene 索引。基本上,您查询它并获得一个有序的 id 列表,您可以使用 Where In() 子句查询您的数据库。 问题是查询中有一个 ORDER BY Field(id, ...) 子句,它按照与 Lucene 返回的结果相同的顺序对结果进行排序。
有没有使用 SQLite 的 ORDER BY Field 的替代方法?还是有另一种方法可以像 Lucene 一样对结果进行排序?
谢谢:)
编辑:
简化的查询可能如下所示:
SELECT i.* FROM item i
WHERE i.id IN(1, 2, 3, 4, 5)
ORDER BY FIELD(i.id, 5, 1, 3, 2, 4)
【问题讨论】:
-
您能否通过示例查询澄清一下?
-
cakebaker.42dh.com/2008/06/10/order-by-field 解释了这种 MySQL 特定语法的含义。
-
这看起来像一个类似的问题,但答案更简单:stackoverflow.com/questions/3303851/sqlite-and-custom-order-by