SOLR запрос исключения - PullRequest
       1

SOLR запрос исключения

3 голосов
/ 24 января 2012

У меня проблема с запросом индекса, когда общий поисковый термин также является частью названия компании, разбросанного по большинству документов. Как исключить название компании из результатов, не влияя на рейтинг в поиске, который включает часть названия компании?

пример: Bobs Automotive Supply - это фирменное наименование.

Как я могу включить релевантные результаты, когда кто-то ищет автомобили или материалы, не возвращая каждый документ в индексе?

Я пробовал "-'Bobs Automotive Supply" + "поисковый запрос", но, похоже, это исключает любой документ с Bobs Automotive Supply и не очень эффективен при поиске "снабжения" или "автомобильного"

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 24 января 2012

Второй ответ здесь, на основании дополнительных разъяснений из первого ответа.

Несколько вариантов.

  1. Добавьте название компании как StopWords в StopWordFilter. Это остановит Solr от их индексации вообще. Поиски, которые их используют, действительно будут искать только те слова, которые не входят в название компании.

  2. Положитесь на собственную оценку, которую Solr будет применять из-за частоты Term. Похоже, эти термины будут в индексе часто. Запросы к ним по-прежнему будут возвращать документы, но если пользователь запрашивает другие, менее распространенные термины, они получат более высокий балл.

  3. Применить низкое усиление запросов (не совсем отрицательное, но меньшее, чем у других документов) к документам, содержащим название компании. Это описано в справочнике по релевантности Solr http://wiki.apache.org/solr/SolrRelevancyFAQ#How_do_I_give_a_negative_.28or_very_low.29_boost_to_documents_that_match_a_query.3F

0 голосов
/ 24 января 2012

РЕДАКТИРОВАТЬ: Обновление вопроса сделать это irrelavent.Оставив это услышать для потомков.:)

Вот почему в документах Solr разные поля.

В этом случае звучит так, как будто в ваших документах есть поле «Нижний колонтитул», отдельное от поля «Тело».Когда поиск выполняется, он будет выполняться только для тела, которое не будет содержать данные из нижнего колонтитула.Вы могли бы даже иметь третье поле, которое является полем «OriginalContent», которое содержит оригинальную копию для целей отображения.Вы не будете искать это, просто сохраните его для дальнейшего использования.

Важной частью является создание двух отдельных полей в вашей схеме и обеспечение индексации тех полей, которые вы хотите иметь возможность искать.

0 голосов
/ 24 января 2012

Знаете ли вы, что статья связана с названием компании или происходит от этого?Если это так, вы можете создать другое поле, а затем просто исключить объекты, которые соответствуют названию компании, с помощью запроса фильтра.Что-то вроде

q=search_term&fq=business_name:(NOT search_term)

Для этого может быть полезно использовать подзапросы или просто повысить, а не отфильтровать результаты.

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