+Added exact-match recordfilter; format name=value
+
--- 1.5.0 2010/10/05
SOLR support. Pazpar2 may operate as web service client for SOLR.
<para>
Specifies a filter which allows Pazpar2 to only include
records that meet a certain criteria in a result. Unmatched records
- will be ignored. The filter takes the form name[~value] , which
+ will be ignored. The filter takes the form name, name~value, or name=value, which
will include only records with metadata element (name) that has the
- substring (value) given. If value is omitted all records with the
- metadata present will be included.
+ substring (~value) given, or matches exactly (=value). If value is omitted all records
+ with the named
+ metadata element present will be included.
</para>
</listitem>
</varlistentry>
if (type)
{
size_t len;
- const char *eq = strchr(s, '~');
- if (eq)
- len = eq - s;
+ int substring;
+ const char *eq;
+
+ if ((eq = strchr(s, '=')))
+ substring = 0;
+ else if ((eq = strchr(s, '~')))
+ substring = 1;
+ if (eq)
+ len = eq - s;
else
len = strlen(s);
if (len == strlen((const char *)type) &&
xmlChar *value = xmlNodeGetContent(n);
if (value && *value)
{
- if (!eq || strstr((const char *) value, eq+1))
+ if (!eq ||
+ (substring && strstr((const char *) value, eq+1)) ||
+ (!substring && !strcmp((const char *) value, eq + 1)))
match = 1;
}
xmlFree(value);