我正在使用texticle (https://github.com/tenderlove/texticle)库来执行全文postgresql搜索。
库生成的sql如下所示:
to_tsvector('spanish', "games"."system"::text) @@ plainto_tsquery('spanish', 'Genesis'::text)
如果有人搜索“&”,那么我的日志中会出现一个警告:
text-search query contains only stop words or doesn't contain lexemes, ignored
我怎样才能避免这种情况?如果搜索词只包含停用词,我是否应该让应用程序知道各种停用词,而不向postgresql发送查询?或者我可以告诉postgresql忽略这个警告吗?
发布于 2014-02-22 01:22:20
如果查询只包含停止字,则此函数可用于解析:
numnode(plainto_tsquery(‘西班牙语’,'&')) =0)
发布于 2013-05-01 23:31:05
警告完全是描述性的。基本上,你必须在编程逻辑的某个地方处理这个问题。如果您的搜索是在存储过程中进行的,那么您可以测试值并查看它是否包含词位。
否则,您可以将日志记录级别设置为ERROR,这样就不会设置警告,或者可以在应用程序级别上处理它。
这些都不是完美的。如果我搜索" the“,我应该会得到类似的警告,所以你可能希望在它被转换为tsquery之后能够进行检查(即在数据库本身中。
否则,我的建议是忽略警告。
发布于 2012-02-16 03:54:55
就我个人而言,我总是对用户输入进行清理。它在很大程度上应该被认为是邪恶的。因此,在这种情况下,我肯定会在应用程序级别进行一些过滤。
https://stackoverflow.com/questions/9171237
复制相似问题