2013-12-09 1 views
2

вопрос новичка о Freebase:Freebase результат запроса погребен под нонсенсом

Ищет ИБМД ид фильма под названием «O». Если я использую SearchBox на сайте Freebase.com и ограничить поиск по типу к all:/film/film, то я получить высокий результат качества с лучшим матчем на вершине:

http://www.freebase.com/search?query=o&lang=en&all=%2Ffilm%2Ffilm&scoring=entity&prefixed=true

Но это не относится к ИБМДУ Я бы. Когда я пытаюсь воссоздать и уточнить этот поиск с помощью редактора запросов, я не могу понять, как выполнить «общий запрос». Лучшее, что я мог придумать делает нечеткий поиск по имени, как это:

[{ 
    "type": "/film/film", 
    "name": null, 
    "name~=": "o", 
    "imdb_id": [], 
    "rottentomatoes_id": [] 
}] 

результат содержит именно ту информацию, что я хочу, но фильм «O» только 12-й результат в списке, погребенного под большим бессмыслицы:

http://www.freebase.com/query?lang=%2Flang%2Fen&q=[{%22type%22%3A%22%2Ffilm%2Ffilm%22%2C%22name%22%3Anull%2C%22name~%3D%22%3A%22o%22%2C%22imdb_id%22%3A[]%2C%22rottentomatoes_id%22%3A[]}]

Как я могу улучшить качество моего результата? Какую специальную магию использует «? Query = o», которую не имеет "name~=":"o"?

ответ

2

Когда вы используете query=o, freebase выполняет некоторую интеллектуальную сортировку результатов, сначала отображает точные совпадения, а затем менее точные совпадения.

С вашим запросом name ~= o вы не ищете фильмы с именем «O», но для фильмов, содержащих «O» в их именах (оператор ~=). Если вы хотите найти конкретное название фильма, а затем указать точное название:

[{ 
    "type": "/film/film", 
    "name": "o", 
    "imdb_id": [], 
    "rottentomatoes_id": [] 
}] 

Это приведет к выходу:

{ 
    "result": [{ 
    "imdb_id": [ 
     "tt0184791" 
    ], 
    "name": "O", 
    "type": "/film/film", 
    "rottentomatoes_id": [ 
     "o" 
    ] 
    }] 
} 
+0

Мои извинения, я только что понял, что задал свой вопрос не очень хорошо: мне нужно запросить с определенной нечеткостью. Пример, который я дал, был не самым лучшим, я буду искать лучшего ... В любом случае, спасибо, что указали, что ~ = означает «содержит», а не «нечеткое совпадение», как я неправильно предположил. –

+0

@ MartinJ.H. Это не совсем «содержит», а вместо этого «соответствует». 'name ~ = o' совпадает с именем соответствия regex против' o' - эффективно делает 'contains'. –

+0

Не совсем. "name ~ =": "o" соответствует темам с * word * "o" в них. Если вы хотите использовать true, вам понадобится «* o *» (что, вероятно, будет тайм-аутом). Кроме того, результаты поиска по популярности, которые MQL не делает. –

0

Если поиск дает вам тему, которую вы хотите, почему не просто используйте output parameter, чтобы добавить IMDB-идентификатор (или что-то еще, что вы хотите) к выходу, который вы запросите, чтобы он вернулся?

+0

Можете ли вы привести пример использования выходного параметра? –

+0

Существует большое количество примеров на странице документации. Я добавил ссылку, поскольку она, по-видимому, не найдена с помощью Google. –