CouchDB Lucene 如何对包含减号 (-) 的查询进行 URL 编码

Posted

技术标签:

【中文标题】CouchDB Lucene 如何对包含减号 (-) 的查询进行 URL 编码【英文标题】:CouchDB Lucene How to URL Encode Query containing Minus (-) 【发布时间】:2014-08-20 15:37:32 【问题描述】:

我想查询包含减号 (-) 的文本,例如

foo-bar 

使用 couchdb lucene 全文查询。 遵循 lucene 规则,我必须避开减号,导致

foo\-bar

最后我必须对反斜杠进行 urlencode 导致

foo%5C-bar

所以完整的网址是:

http://127.0.0.1:5984/_fti/local/db/_design/foo/by_subject?q=foo%5C-bar

两者都不起作用。结果总是分成两个短语

"q":"default:foo default:bar"

导致也找到仅包含 foo 或 bar 的文档。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

转义“-”并不是您真正需要的。您遇到的问题是您的分析器在“-”上进行标记,因此您实际上是在搜索两个不同的术语。相反,您需要搜索一个短语。对于search a phrase,只需将其括在引号中:"foo-bar"

http://127.0.0.1:5984/_fti/local/db/_design/foo/by_subject?q=%22foo-bar%22

【讨论】:

你是对的!使用你的短语 "foo-bar" 给出答案:"q":"default:\"foo bar\"" 并找到正确的文档。谢谢你!

以上是关于CouchDB Lucene 如何对包含减号 (-) 的查询进行 URL 编码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CouchApp 对 CouchDB 进行 TDD?

Lucene 如何对索引进行搜索?

如何使用 CouchDB 按年和月对条目进行分组?

在启动我想要运行的完整 XQuery 之前,如何验证嵌入在较大 XQuery 中的 Lucene 查询不包含语法错误?

如何在Ubuntu 20.04 LTS上安装Apache CouchDB

如何限制 CouchApp 对 CouchDB 的 `_user` 表的访问?