Also check and index eventual icon url information from metadata.

pull/39/head
luc 9 years ago
parent 9f712146df
commit 3f338777f7

@ -316,6 +316,8 @@ public class CollectionConfiguration extends SchemaConfiguration implements Seri
add(doc, CollectionSchema.keywords, keywords); add(doc, CollectionSchema.keywords, keywords);
} }
/* Metadata node may contain one favicon url when transmitted as dht chunk */
processIcons(doc, allAttr, md.getIcons());
if (allAttr || contains(CollectionSchema.imagescount_i)) add(doc, CollectionSchema.imagescount_i, md.limage()); if (allAttr || contains(CollectionSchema.imagescount_i)) add(doc, CollectionSchema.imagescount_i, md.limage());
if (allAttr || contains(CollectionSchema.linkscount_i)) add(doc, CollectionSchema.linkscount_i, md.llocal() + md.lother()); if (allAttr || contains(CollectionSchema.linkscount_i)) add(doc, CollectionSchema.linkscount_i, md.llocal() + md.lother());
if (allAttr || contains(CollectionSchema.inboundlinkscount_i)) add(doc, CollectionSchema.inboundlinkscount_i, md.llocal()); if (allAttr || contains(CollectionSchema.inboundlinkscount_i)) add(doc, CollectionSchema.inboundlinkscount_i, md.llocal());
@ -999,58 +1001,79 @@ public class CollectionConfiguration extends SchemaConfiguration implements Seri
/** /**
* Add icons metadata to Solr doc when corresponding schema attributes are * Add icons metadata to Solr doc when corresponding schema attributes are
* enabled. Remove images urls from inboudLinks and outboundLinks. * enabled.
* *
* @param doc * @param doc
* solr document to fill * solr document to fill. Must not be null.
* @param allAttr * @param allAttr
* all attributes are enabled * all attributes are enabled.
* @param icons
* document icon entries.
*/
private void processIcons(SolrInputDocument doc, boolean allAttr, Collection<IconEntry> icons) {
processIcons(doc, allAttr, null, null, icons);
}
/**
* Add icons metadata to Solr doc when corresponding schema attributes are
* enabled. Remove icons urls from inboudLinks and outboundLinks.
*
* @param doc
* solr document to fill. Must not be null.
* @param allAttr
* all attributes are enabled.
* @param inboundLinks * @param inboundLinks
* all document inbound links * all document inbound links.
* @param outboundLinks * @param outboundLinks
* all document outbound links * all document outbound links.
* @param icons * @param icons
* document icon entries * document icon entries.
*/ */
private void processIcons(SolrVector doc, boolean allAttr, LinkedHashMap<DigestURL, String> inboundLinks, private void processIcons(SolrInputDocument doc, boolean allAttr, LinkedHashMap<DigestURL, String> inboundLinks,
LinkedHashMap<DigestURL, String> outboundLinks, Collection<IconEntry> icons) { LinkedHashMap<DigestURL, String> outboundLinks, Collection<IconEntry> icons) {
final List<String> protocols = new ArrayList<String>(icons.size()); if (icons != null) {
final String[] sizes = new String[icons.size()]; final List<String> protocols = new ArrayList<String>(icons.size());
final String[] stubs = new String[icons.size()]; final String[] sizes = new String[icons.size()];
final String[] rels = new String[icons.size()]; final String[] stubs = new String[icons.size()];
int i = 0; final String[] rels = new String[icons.size()];
/* Prepare solr field values */ int i = 0;
for (final IconEntry ie : icons) { /* Prepare solr field values */
final DigestURL url = ie.getUrl(); for (final IconEntry ie : icons) {
final DigestURL url = ie.getUrl();
inboundLinks.remove(url);
outboundLinks.remove(url); if(inboundLinks != null) {
inboundLinks.remove(url);
String protocol = url.getProtocol(); }
protocols.add(protocol); if(outboundLinks != null) {
outboundLinks.remove(url);
/* }
* There may be multiple sizes and multiple rels for one icon : we
* store this as flat string as currently solr doesn't support String protocol = url.getProtocol();
* multidimensionnal array fields protocols.add(protocol);
*/
sizes[i] = ie.sizesToString(); /*
stubs[i] = url.toString().substring(protocol.length() + 3); * There may be multiple sizes and multiple rels for one icon :
rels[i] = ie.relToString(); * we store this as flat string as currently solr doesn't
* support multidimensionnal array fields
i++; */
} sizes[i] = ie.sizesToString();
if (allAttr || contains(CollectionSchema.icons_protocol_sxt)) { stubs[i] = url.toString().substring(protocol.length() + 3);
add(doc, CollectionSchema.icons_protocol_sxt, protocolList2indexedList(protocols)); rels[i] = ie.relToString();
}
if (allAttr || contains(CollectionSchema.icons_urlstub_sxt)) { i++;
add(doc, CollectionSchema.icons_urlstub_sxt, stubs); }
} if (allAttr || contains(CollectionSchema.icons_protocol_sxt)) {
if (allAttr || contains(CollectionSchema.icons_rel_sxt)) { add(doc, CollectionSchema.icons_protocol_sxt, protocolList2indexedList(protocols));
add(doc, CollectionSchema.icons_rel_sxt, rels); }
} if (allAttr || contains(CollectionSchema.icons_urlstub_sxt)) {
if (allAttr || contains(CollectionSchema.icons_sizes_sxt)) { add(doc, CollectionSchema.icons_urlstub_sxt, stubs);
add(doc, CollectionSchema.icons_sizes_sxt, sizes); }
if (allAttr || contains(CollectionSchema.icons_rel_sxt)) {
add(doc, CollectionSchema.icons_rel_sxt, rels);
}
if (allAttr || contains(CollectionSchema.icons_sizes_sxt)) {
add(doc, CollectionSchema.icons_sizes_sxt, sizes);
}
} }
} }

Loading…
Cancel
Save