результаты поиска по отдельным полям — cloudsearch/solr/lucene

Это есть в Amazon Cloudsearch, но, вероятно, это верно для любой стандартной установки Lucene/Solr.

Я индексирую кучу статей и комментариев к этим статьям для поиска. Когда я ищу «Трамп отстой», мне нужна возможность получить список совпадающих комментариев или список статей с совпадающими комментариями.

Я знаю, что могу проиндексировать их в двух отдельных доменах, но мне интересно, есть ли более простой способ сделать «различное» поле... другими словами...

У меня есть список проиндексированных документов для каждого комментария, который также содержит article_id в качестве поля. Итак:

идентификатор = 1 {'статья_id': 10}

идентификатор = 2 {'статья_id': 10}

прямо сейчас, если оба этих комментария совпадают, я получу 2 результата. (и да, я могу сделать отдельный на стороне клиента, но это испортит пейджинг и тому подобное). Я хочу просто вернуться [10]


person ggez44    schedule 09.06.2016    source источник


Ответы (1)


В CloudSearch нет способа сделать отдельный, поэтому вам нужно будет придумать другое решение.

Лучшее, что я могу предложить, — это объединить все комментарии в одно текстовое поле в записях статей и добавить поле типа, чтобы различать комментарии и статьи (если у вас его еще нет). Затем вы можете запросить type=Article при поиске по объединенным комментариям и телу статьи, и вы получите только один результат для каждой статьи.

Я уверен, что даже с тысячами комментариев, объединенных в одно поле каждой статьи, CloudSearch будет работать хорошо (возможно, даже лучше, чем с десятками тысяч дополнительных записей для рассмотрения), однако ваш процесс обновления для объединения всех комментариев может стать тяжелым. Если вы получаете тысячи комментариев, то добавление отслеживания флага, если оно было объединено, чтобы вам не приходилось каждый раз перестраивать их, будет полезно.

person dotcomly    schedule 10.06.2016