2016-07-04 11 views
4

Я ищу PubMed, используя rentrez пакет в R и хотел бы, чтобы результаты отсортированы по релевантности. В настоящее время они сортируются по дате публикации.Сортировка результатов поиска из rentrez по релевантности

library(rentrez) 

query = 'regression to the mean[TITL]' 
entrez_search = entrez_search(db="pubmed", term=query, retmax=30) 
paper_data = entrez_summary(db="pubmed", id=entrez_search$ids) 
dates = extract_from_esummary(paper_data, c("pubdate")) 

ответ

3

Насколько я понимаю, информация о «релевантности» связана с данным поиском (а не с записью записи или полными записями, которые могут быть загружены позже), и нет оценки или аналогичного высказывания о том, насколько релевантен данный результат поиска в данных, возвращаемых поиском entrez.

С другой стороны, я думаю, что аргумент sort=relevance что-то делает. Если вы отправляете этот же запрос дважды, идентификаторы одного и того же порядка:

default_search = entrez_search(db="pubmed", term=query, retmax=30) 
default_search_again = entrez_search(db="pubmed", term=query, retmax=30) 
all(default_search$ids == default_search_again$ids) 

.

[1] TRUE 

Принимая во внимание, устанавливая порядок relevance изменяет порядок:

rel_search = entrez_search(db="pubmed", term=query, retmax=30, sort="relevance") 
default_search$ids == rel_search$ids 

.

[1] TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE 
[13] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE TRUE TRUE 
[25] FALSE FALSE TRUE TRUE FALSE FALSE 

Позже вызывает к резюме, принеси и функции связи должны поддерживать этот порядок, так что это может быть простым (только?) Способ следить за информацией актуальности?

1

extract_from_esummary используется на paper_data esummary и вызова выбранного аргумента. В вашем случае это pubdate.

Если вы изучите структуру paper_data, например. используя str(paper_data), вы заметите элементы, которые вы могли бы использовать в качестве второго аргумента для extract_from_esummary, например. сортировка по ISSN:

issn <- extract_from_esummary(paper_data, c("issn")) 

К сожалению, для вас я не вижу ничего, что бы соответствовало бы релевантности.

+0

Я могу добавить параметр sort = 'релевантность' в команду entrez_search (как описано здесь http://www.ncbi.nlm.nih.gov/books/NBK25499/#_chapter4_ESearch_), но это не сработает. – agbarnett

+0

Как я уже упоминал ранее, я не вижу элемента релевантности в информации, полученной из PubMed. Я использовал 'ent_search = entrez_search (db =" pubmed ", term = query, retmax = 30, sort =" релевантность ")', затем 'paper_data = entrez_summary (db =" pubmed ", id = ent_search $ ids)' и ' paper_data [1] ', который возвратил 43 элемента (uid, pubdate, epubdate, source, authors, lastauthor, title и т. д.), но ничего не напоминает« релевантность ». – epo3