gpt4 book ai didi

full-text-search - SPHINX字段搜索运算符问题

转载 作者:行者123 更新时间:2023-12-03 08:12:05 27 4
gpt4 key购买 nike

我正在使用SPH_MATCH_EXTENDED2查询语法的Sphinx 2.0.4-release。当我在查询中有一个“空值”时,即:

blah & ''

狮身人面像会忽略它,仅搜索“blah”。当我使用字段搜索运算符并且一个空值最后出现时,它仍然以相同的方式工作:
@field1 blah @field2 ''

但是这个查询:
@field1 '' @field2 blah

导致错误:语法错误,''@ field2 blah'附近意外的TOK_FIELDLIMIT。当然,我可以修剪空值,但是这种行为对我来说似乎不合逻辑……我做错了什么吗?还是实际上是一个错误?

最佳答案

Sphinx使用倒排索引。它将文本分解为单词并存储(散列)它们。

因此,它不会索引“无”(不是单词)-因此您无法搜索空字符串。

所有这些查询严格来说都是语法错误-毫无意义。但是在某些情况下,狮身人面像只会默默地处理无效的语法(因为它随后回退并认为它的单词char,然后不在charset_table中,所以去了)-这样做会产生一个“有效”查询(只是不行)你打算做什么

解决方案是在索引编制时将一个空字段简单地变成一个“单词”,然后您就可以搜索空字符串了!

例如

sql_query = SELECT id, title, IF(field1 = '','EMPTY_STRING',field1) AS field1, .... 

然后您可以查询为
@field1 EMPTY_STRING @field2 blah

您用作“EMPTY_STRING”的内容完全是任意的。

关于full-text-search - SPHINX字段搜索运算符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com