在狮身人面像中索引日期时间
indexing datetime in sphinx
我的数据库中有一些日期时间字段,我想在这些字段上进行搜索。 sphinx 中有 sql_attr_timestamp 属性 不是索引数据,仅用于过滤,也仅适用于 SQL 源类型(mysql、pgsql、mssql)。那么,有没有办法在 sphinx 中索引日期时间字段(或日期的组成部分)?
Sphinx 查询的全文部分不是强制性的,即您可以跳过它并进行如下查询:
select * from idx where published = ...
或
select * from idx where inserted > ...
如果您使用 SphinxAPI,您只需将查询设为空即可。
在某些情况下可能有意义的另一个技巧是将您的时间值放入全文字段而不是属性(使用时只需要为此指定 sql_attr_timestamp )。这在某些情况下可能会提高性能(例如,当您有很多文档,但只有少数文档符合条件时)。
在这种情况下考虑:
- 时间值将如何在 FT 字段中标记化,也许您会
需要制作 YYYYMMDD 而不是 YYYY-MM-DD 以确保它仍然是
单个单词
- 是否希望在使用时无意中匹配到
使用你所有字段的查询,如果你不这样做,你可以将它包装在
一些特殊的 prefix/suffix,例如YYYY-MM-DD 将变为
dtYYYYMMDDdt 然后有人会发现它的机会要低得多
比只是 YYYYMMDD 或 YYYY-MM-DD(如果 - 是分隔符)
我的数据库中有一些日期时间字段,我想在这些字段上进行搜索。 sphinx 中有 sql_attr_timestamp 属性 不是索引数据,仅用于过滤,也仅适用于 SQL 源类型(mysql、pgsql、mssql)。那么,有没有办法在 sphinx 中索引日期时间字段(或日期的组成部分)?
Sphinx 查询的全文部分不是强制性的,即您可以跳过它并进行如下查询:
select * from idx where published = ...
或
select * from idx where inserted > ...
如果您使用 SphinxAPI,您只需将查询设为空即可。 在某些情况下可能有意义的另一个技巧是将您的时间值放入全文字段而不是属性(使用时只需要为此指定 sql_attr_timestamp )。这在某些情况下可能会提高性能(例如,当您有很多文档,但只有少数文档符合条件时)。 在这种情况下考虑:
- 时间值将如何在 FT 字段中标记化,也许您会 需要制作 YYYYMMDD 而不是 YYYY-MM-DD 以确保它仍然是 单个单词
- 是否希望在使用时无意中匹配到
使用你所有字段的查询,如果你不这样做,你可以将它包装在
一些特殊的 prefix/suffix,例如YYYY-MM-DD 将变为
dtYYYYMMDDdt 然后有人会发现它的机会要低得多 比只是 YYYYMMDD 或 YYYY-MM-DD(如果 - 是分隔符)