【问题标题】:Escape LukeRequest with spaces, slashes, and colon使用空格、斜杠和冒号转义 LukeRequest
【发布时间】:2013-03-26 18:31:43
【问题描述】:

我正在使用 Solr 4.1。使用 LukeRequest,我想获取包含特定字段数据的文档数量。该字段的名称类似于http://foo.org/bar/ baz(注意bar/baz 之间的空格)。当我访问http://127.0.0.1:8983/root/admin/luke 时,我会得到一份我所有领域的列表,包括前面提到的领域。当我访问时

http://127.0.0.1:8983/root/admin/luke?fl=http://foo.org/bar/ baz

我没有命中。我尝试过对字符串进行 url 编码,转义斜杠,转义冒号,转义空格,使用 + 代替空格,以及我能想到的所有可能的反斜杠组合。在另一个 StackOverflow 问题 field listing in solr with "fl" parameter for a field having space in between 上发布的解决方案对我不起作用。

我真的只是在寻找是否有任何文档对这个特定字段有价值的答案,所以如果有比 LukeRequest 更好的方法来做到这一点,我也会全力以赴。

【问题讨论】:

    标签: solr solr4 luke


    【解决方案1】:

    AFAIK,使用反斜杠转义特殊字符适用于值,不适用于 flsort 等参数。

    这个answer on lucene mailing list也证实了我的想法。我猜你不应该在字段名中有空格。

    【讨论】:

    • 感谢您的意见。从我的所有字段名称中删除空格实际上是不可能的,所以我必须找到其他解决方法。
    • @Wiscocrew - 我怀疑您是否可以做一些简单的事情,但如果您找到方法,请回复。
    • 我通过使用条款组件解决了这个问题。字段名称被指定为查询的一部分,而不是参数,因此转义在那里起作用。我所做的要点:http://127.0.0.1:8983/root/terms?terms.fl=http%3A%2F%2Ffoo.org%2Fbar%2F%20baz
    【解决方案2】:

    我相信您可以使用TermsComponent 完成同样的事情,因为它可以告诉您是否有任何与索引中的字段相关联的术语。但是,您需要在查询中指定字段名称,因此您会遇到类似的问题。正如 Srikanth 所回答的,您最好不要在字段名称中使用空格或特殊字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2013-06-02
      相关资源
      最近更新 更多