2016-06-09 8 views
0

Это на Amazon Cloudsearch, но это, вероятно, справедливо для любой общей установки Lucene/Solr.Результаты поиска по отдельному полю - cloudsearch/solr/lucene

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

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

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

ID = 1 { 'article_id': 10}

ID = 2 { 'article_id': 10}

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

ответ

0

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

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

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

Смежные вопросы