Как использовать функцию «связанности ()» в Solr для измерения взаимосвязанности двух комплектов документов? - PullRequest
2 голосов
/ 14 июня 2019

Я хотел бы использовать новую возможность «График семантических знаний» в Solr, чтобы ответить на этот вопрос: Учитывая набор документов от нескольких разных издателей, вычислить показатель «взаимосвязанности» между данным издателем и любым другим издателем,основанный на текстовом содержании соответствующих документов.

Я наблюдал несколько выступлений Трея Грейнджера о функциональности графика семантических знаний в Solr (это недавний доклад: https://www.youtube.com/watch?v=lLjICpFwbjQ)Я достаточно хорошо разбираюсь в функциях граненого поиска Solr, и у меня есть работающий движок Solr с индексируемым и доступным для поиска набором данных. До сих пор мне не удавалось построить запрос фасета, чтобы выполнить то, что я хочу.

Вот пример команды curl, которая, как я думал, может дать мне то, что я хочу

curl -sS -X POST http://localhost:8983/solr/plans/query -d '
{
  params: {
    fore:"publisher_url:life.church"
    back:"*:*",
  },
  query:"*:*",
  limit: 0,
  facet:{
      pub_type: {
        type: terms,
        field: "publisher_url",
        limit: 5,
        sort: { "r1": "desc" },
        facet: {
          r1: "relatedness($fore,$back)"
        }
      }
    }
  }
}'

Ниже приведены фасеты результата. Обратите внимание, что после первого сегмента (соответствующего запросу на переднем плане) все остальные имеют точнота же связь. Что заставляет меня верить, чтотолько на основе поля publisher_url, а не всего текстового содержимого документов.

{
  "facets":{
    "count":2152,
    "pub_type":{
      "buckets":[{
          "val":"life.church",
          "count":141,
          "r1":{
            "relatedness":0.38905,
            "foreground_popularity":0.06552,
            "background_popularity":0.06552}},
        {
          "val":"10ofthose.com/us/products/1039/colossians",
          "count":1,
          "r1":{
            "relatedness":-0.00285,
            "foreground_popularity":0.0,
            "background_popularity":4.6E-4}},
        {
          "val":"14DAYMARRIAGECHALLENGE.COM",
          "count":1,
          "r1":{
            "relatedness":-0.00285,
            "foreground_popularity":0.0,
            "background_popularity":4.6E-4}},
        {
          "val":"23blast.com",
          "count":1,
          "r1":{
            "relatedness":-0.00285,
            "foreground_popularity":0.0,
            "background_popularity":4.6E-4}},
        {
          "val":"2911worship.com",
          "count":1,
          "r1":{
            "relatedness":-0.00285,
            "foreground_popularity":0.0,
            "background_popularity":4.6E-4}}]}}}

1 Ответ

0 голосов
/ 14 июня 2019

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

Поскольку ваш набор переднего плана содержит только это единственное значение (и ни одно из другого), первый сегмент - единственный, который будет генерировать другой показатель сходства, когда вы граните для того же поля , что и Вы используете для выбора документов.

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

Возможно, вам нужно что-то более структурированное, чем поле text, чтобы генерировать оценки relatedness (), поскольку это обычно более полезно для поиска отдельных значений, которые генерируют статистическую информацию о структуре вашего набора запросов.

The Like Like Эта функциональность может лучше подходить для получения большинства похожих сайтов.

Опять же, это основано на моем понимании функциональности на данный момент, так что кто-то еще может добавить больше деталей и исправить меня по мере необходимости.

...