Могу ли я ограничить поиск определенным диапазоном дат? - PullRequest
0 голосов
/ 27 августа 2009

Я хочу получить все результаты ПОСЛЕ определенной даты, вы можете сделать это с помощью Solr?

(http://lucene.apache.org/solr/)

Прямо сейчас результаты поиска по всему набору результатов, я хочу фильтровать что-либо после указанной даты.

Обновление Это еще не работает для меня.

Мой возвращенный документ:

попытка:

http://www.example.com:8085/solr/select/?q=test&version=2.2&start=0&rows=10&indent=on&indexed_at:2009-08-27T13%3A15%3A27.73Z

<doc>
<str name="apptype">Forum</str>
<str name="collapse">forum:334</str>
<str name="content"> testing </str>
<str name="contentid">357</str>
<str name="createdby">some_user</str>
<str name="date">20090819</str>
<str name="dummy_id">1</str>
<int name="group">5</int>
<date name="indexed_at">2009-08-25T16:48:45.121Z</date>
<str name="rating">000.0</str>
<str name="rawcontent"><p>testing</p></str>
−
<arr name="roles">
<str>1</str>
<str>2</str>
<str>3</str>
<str>4</str>
<str>14</str>
<str>15</str>
<str>16</str>
</arr>
<int name="section">79</int>
<int name="thread">334</int>
<str name="title">testing</str>
<str name="titlesort">testing</str>
<str name="type">forum</str>
−
<str name="unique_id">
BLAHBLAH|357
</str>
<str name="url">/blahey/f/79/p/334/357.aspx#357</str>
<str name="user">21625</str>
<str name="username">some_user</str>
</doc>

Ответы [ 3 ]

4 голосов
/ 27 августа 2009

Да, я могу предположить, что у вас есть поле со значением даты, по которой вы хотите фильтровать. Тогда вы делаете

yourdatefield:[2008-08-27T23:59:59.999Z TO *] 

пример URL будет localhost: 8983 / solr / select? Q = yourdatefield: [2008-08-27T23:59:59.999Z TO *]

Вы хотите отправить часть даты в виде запроса, поэтому в значении q, например,

localhost:8983/solr/select/q=(text:test+AND+indexed_at:`[2009-08-27T13:A15:A27.73Z TO *`])

Таким образом, весь запрос содержится в параметре строки запроса q.

формат даты - ISO 8601.

2 голосов
/ 27 августа 2009

Вы можете добавить автоматическую метку времени к документам, когда они проиндексированы, используя:

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>

в файле schema.xml. В схеме по умолчанию это закомментировано, поэтому, если вы скопировали значение по умолчанию, вам просто нужно раскомментировать его.

Вы можете добавить это и использовать предложенный olle шаблон поиска, чтобы найти документы, проиндексированные после определенной даты. (Вам нужно обновить yourdatefield с timestamp или любым другим именем поля в xml.

0 голосов
/ 27 августа 2009

Вам нужно будет создать запрос, который сравнивает даты, вот синтаксис для запросов: http://wiki.apache.org/solr/SolrQuerySyntax

А вот как вы можете сделать сравнение дат в запросе: http://lucene.apache.org/solr/api/org/apache/solr/util/DateMathParser.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...