Search PLoS Journals subjects.
Usage
plossubject(
q = NULL,
fl = "id",
fq = NULL,
sort = NULL,
start = 0,
limit = 10,
sleep = 6,
errors = "simple",
proxy = NULL,
callopts = NULL,
progress = NULL,
...
)
Arguments
- q
Search terms (character). You can search on specific fields by doing 'field:your query'. For example, a real query on a specific field would be 'author:Smith'.
- fl
Fields to return from search (character) [e.g., 'id,title'], any combination of search fields (see the dataset
plosfields
)- fq
List specific fields to filter the query on (if NA, all queried). The options for this parameter are the same as those for the fl parameter. Note that using this parameter doesn't influence the actual query, but is used to filter the results to a subset of those you want returned. For example, if you want full articles only, you can do
'doc_type:full'
. In another example, if you want only results from the journal PLOS One, you can do'journal_key:PLoSONE'
. Seejournalnamekey
for journal abbreviations.- sort
Sort results according to a particular field, and specify ascending (asc) or descending (desc) after a space; see examples. For example, to sort the counter_total_all field in descending fashion, do sort='counter_total_all desc'
- start
Record to start at (used in combination with limit when you need to cycle through more results than the max allowed=1000). See Pagination below
- limit
Number of results to return (integer). Setting
limit=0
returns only metadata. See Pagination below- sleep
Number of seconds to wait between requests. No need to use this for a single call to searchplos. However, if you are using searchplos in a loop or lapply type call, do sleep parameter is used to prevent your IP address from being blocked. You can only do 10 requests per minute, so one request every 6 seconds is about right.
- errors
(character) One of simple or complete. Simple gives http code and error message on an error, while complete gives both http code and error message, and stack trace, if available.
- proxy
List of arguments for a proxy connection, including one or more of: url, port, username, password, and auth. See
proxy
for help, which is used to construct the proxy connection.- callopts
(list) optional curl options passed to
HttpClient
- progress
a function with logic for printing a progress bar for an HTTP request, ultimately passed down to curl. only supports
httr::progress()
- ...
Additional Solr arguments
Website vs. API behavior
Don't be surprised if queries you perform in a scripting language, like using rplos
in R, give different results than when searching for articles on the PLOS website. I am
not sure what exact defaults they use on their website. There are a few things to consider.
You can tweak which types of articles are returned: Try using the article_type
filter in the fq
parameter. For which journal to search, e.g., do
'journal_key:PLoSONE'
. See journalnamekey()
for journal
abbreviations.
Phrase searching
To search phrases, e.g., synthetic biology as a single item, rather than
separate occurrences of synthetic and biology, simply put double
quotes around the phrase. For example, to search for cases of synthetic biology,
do searchplos(q = '"synthetic biology"')
.
You can modify phrase searches as well. For example,
searchplos(q = '"synthetic biology" ~ 10')
asks for cases of
synthetic biology within 10 words of each other. See examples.
Pagination
The searchplos
function and the many functions that are wrappers around
searchplos
all do paginatino internally for you. That is, if you request for
example, 2000 results, the max you can get in any one request is 1000, so we'll do
two requests for you. And so on for larger requests.
You can always do your own paginatino by doing a lapply type call or a for loop to cycle through pages of results.
Examples
if (FALSE) {
plossubject('marine ecology', limit = 5)
plossubject(q='marine ecology', fl = c('id','journal','title'), limit = 20)
plossubject(q='marine ecology', fl = c('id','journal'),
fq='doc_type:full', limit = 9)
plossubject(q='marine ecology', fl = c('id','journal'),
fq=list('doc_type:full','!article_type_facet:"Issue%20Image"'),
limit = 9)
}