Я хочу использовать возможности регулярного выражения solr для запроса поля даты. Я пытаюсь сделать простой запрос следующим образом, но я получаю 0 результатов и никаких ошибок. ? ... д = ДАТА:/200 [0-9] -03-30T11 \: 58 \: 40Z/& фл = ДАТАSolr Date Regex Query
Вот несколько примеров выхода:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="fl">id,date</str>
<str name="q">date:/.*:.*/</str>
</lst>
</lst>
<result name="response" numFound="39" start="0">
<doc>
<str name="id">1362932537549-A17C9685</str>
<date name="date">2012-10-31T14:57:53Z</date>
</doc>
<doc>
<str name="id">1362932537549-AD280D59</str>
<date name="date">2012-10-25T09:57:53Z</date>
</doc>
<doc>
<str name="id">1362932537549-B091BE97</str>
<date name="date">2012-10-23T09:57:53Z</date>
</doc>
<doc>
<str name="id">1362932537549-B0D8341C</str>
<date name="date">2012-10-22T14:57:53Z</date>
</doc>
<doc>
<str name="id">1362932537549-40083ADB</str>
<date name="date">2010-08-12T14:33:00Z</date>
</doc>
<doc>
<str name="id">1362932537549-9CA68015</str>
<date name="date">2011-07-20T12:25:02Z</date>
</doc>
...
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">8380</int>
<lst name="params">
<str name="fl">id,date</str>
<str name="q">date:/.*.*/</str>
</lst>
</lst>
<result name="response" numFound="1263" start="0">
<doc>
<str name="id">1362932537549-5A0DAFB7</str>
<date name="date">2010-08-12T14:31:00Z</date>
</doc>
<doc>
<str name="id">1362932537549-D712F1C71</str>
<date name="date">2011-12-01T13:23:53Z</date>
</doc>
<doc>
<str name="id">1362932537549-3FAA6BC</str>
<date name="date">2012-05-25T14:26:08Z</date>
</doc>
<doc>
<str name="id">1362932537549-C8A6B81F</str>
<date name="date">2010-08-12T14:25:00Z</date>
</doc>
<doc>
<str name="id">1362932537549-D712F1C8</str>
<date name="date">2011-12-01T13:23:53Z</date>
</doc>
...
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">34443</int>
<lst name="params">
<str name="fl">id,date</str>
<str name="q">date:/.*0.*/</str>
</lst>
</lst>
<result name="response" numFound="65" start="0">
<doc>
<str name="id">1362932537549-A4BC013G</str>
<date name="date">2012-10-29T17:57:53Z</date>
</doc>
<doc>
<str name="id">1362932537549-862F708G</str>
<date name="date">2013-02-14T09:48:46Z</date>
</doc>
<doc>
<str name="id">1362932537549-B8A38A74</str>
<date name="date">2013-02-14T09:49:18Z</date>
</doc>
<doc>
<str name="id">1362932537549-D4BA90CD</str>
<date name="date">2007-10-09T21:53:34Z</date>
</doc>
<doc>
<str name="id">1362932537549-3028513F</str>
<date name="date">2011-06-24T20:30:22Z</date>
</doc>
Если это помогает, что-то вроде ...? Q = text:/message (. *)?/& Fl = id, текст работает и возвращает каждый документ с полем «текст», установленным для сообщения. Для поля даты, когда я пытаюсь выполнить следующее, я получаю 0 результатов: ...? Q = date:/2013-03-30T15 \: 58 \: 4 (. *)?/& Fl = id, date –
Начните с более простое выражение типа '? q = date: /.*/& fl = date'. Если это тоже не сработает, то может быть, что 'date' не является строковым типом, который может быть просто регулярным. –
^Это работает. Я возвращаю все записи, когда я использую? Q = date: /.*/& fl = date –