diff --git a/htroot/AccessTracker_p.html b/htroot/AccessTracker_p.html
index e191926d3..814d026b3 100644
--- a/htroot/AccessTracker_p.html
+++ b/htroot/AccessTracker_p.html
@@ -79,6 +79,7 @@
URL fetch (ms) |
Snippet comp (ms) |
Query |
+ User Agent |
@@ -93,6 +94,7 @@
#[urltime]# |
#[snippettime]# |
#[querystring]# |
+ #[userAgent]# |
#{/list}#
@@ -107,6 +109,7 @@
Ø #[urltime_avg]# |
Ø #[snippettime_avg]# |
|
+ |
diff --git a/htroot/AccessTracker_p.java b/htroot/AccessTracker_p.java
index 8853b9c49..279ad058e 100644
--- a/htroot/AccessTracker_p.java
+++ b/htroot/AccessTracker_p.java
@@ -176,6 +176,7 @@ public class AccessTracker_p {
prop.putNum("page_list_" + entCount + "_urltime", searchProfile.urlretrievaltime);
prop.putNum("page_list_" + entCount + "_snippettime", searchProfile.snippetcomputationtime);
prop.putNum("page_list_" + entCount + "_resulttime", searchProfile.searchtime);
+ prop.putHTML("page_list_" + entCount + "_userAgent", searchProfile.userAgent);
qcountSum += searchProfile.itemsPerPage;
rcountSum += searchProfile.resultcount;
utimeSum += searchProfile.urlretrievaltime;
diff --git a/htroot/AccessTracker_p.xml b/htroot/AccessTracker_p.xml
index d8b2022fc..05af4b87e 100644
--- a/htroot/AccessTracker_p.xml
+++ b/htroot/AccessTracker_p.xml
@@ -26,11 +26,11 @@
#[offset]#
#[querycount]#
#[resultcount]#
- #[querytime]#
#[resulttime]#
#[urltime]#
#[snippettime]#
- #[querystring]#
+ #[querystring]#
+ #[userAgent]#
#{/list}#
diff --git a/htroot/IndexControlRWIs_p.java b/htroot/IndexControlRWIs_p.java
index 272edfeef..a18fbbecc 100644
--- a/htroot/IndexControlRWIs_p.java
+++ b/htroot/IndexControlRWIs_p.java
@@ -517,7 +517,7 @@ public class IndexControlRWIs_p {
}
public static RankingProcess genSearchresult(final serverObjects prop, final Switchboard sb, Segment segment, final byte[] keyhash, final Bitfield filter) {
- final QueryParams query = new QueryParams(new String(keyhash), -1, filter, segment, sb.getRanking());
+ final QueryParams query = new QueryParams(new String(keyhash), -1, filter, segment, sb.getRanking(), "IndexControlRWIs_p");
final ReferenceOrder order = new ReferenceOrder(query.ranking, query.targetlang);
final RankingProcess ranked = new RankingProcess(query, order, Integer.MAX_VALUE);
ranked.run();
diff --git a/htroot/yacy/search.java b/htroot/yacy/search.java
index 8cc6c125e..55ac52929 100644
--- a/htroot/yacy/search.java
+++ b/htroot/yacy/search.java
@@ -223,7 +223,8 @@ public final class search {
client,
false,
indexSegment,
- rankingProfile
+ rankingProfile,
+ header.get(RequestHeader.USER_AGENT, "")
);
yacyCore.log.logInfo("INIT HASH SEARCH (abstracts only): " + QueryParams.anonymizedQueryHashes(theQuery.queryHashes) + " - " + theQuery.displayResults() + " links");
@@ -276,7 +277,8 @@ public final class search {
client,
false,
sb.indexSegments.segment(Segments.Process.PUBLIC),
- rankingProfile
+ rankingProfile,
+ header.get(RequestHeader.USER_AGENT, "")
);
yacyCore.log.logInfo("INIT HASH SEARCH (query-" + abstracts + "): " + QueryParams.anonymizedQueryHashes(theQuery.queryHashes) + " - " + theQuery.displayResults() + " links");
yacyChannel.channels(yacyChannel.REMOTESEARCH).addMessage(new RSSMessage("Remote Search Request from " + ((remoteSeed == null) ? "unknown" : remoteSeed.getName()), QueryParams.anonymizedQueryHashes(theQuery.queryHashes), ""));
diff --git a/htroot/yacysearch.java b/htroot/yacysearch.java
index c6aa358cd..b3b1aa17d 100644
--- a/htroot/yacysearch.java
+++ b/htroot/yacysearch.java
@@ -491,7 +491,8 @@ public class yacysearch {
client,
authenticated,
indexSegment,
- ranking);
+ ranking,
+ header.get(RequestHeader.USER_AGENT, ""));
EventTracker.delete(EventTracker.EClass.SEARCH);
EventTracker.update(EventTracker.EClass.SEARCH, new ProfilingGraph.searchEvent(theQuery.id(true), SearchEvent.Type.INITIALIZATION, "", 0, 0), false);
diff --git a/source/de/anomic/search/DocumentIndex.java b/source/de/anomic/search/DocumentIndex.java
index 99c5e75a0..0888addd5 100644
--- a/source/de/anomic/search/DocumentIndex.java
+++ b/source/de/anomic/search/DocumentIndex.java
@@ -189,7 +189,7 @@ public class DocumentIndex extends Segment {
*/
public ArrayList find(String querystring, int count) {
// make a query and start a search
- QueryParams query = new QueryParams(querystring, count, null, this, textRankingDefault);
+ QueryParams query = new QueryParams(querystring, count, null, this, textRankingDefault, "DocumentIndex");
ReferenceOrder order = new ReferenceOrder(query.ranking, query.targetlang);
RankingProcess rankedCache = new RankingProcess(query, order, SearchEvent.max_results_preparation);
rankedCache.start();
diff --git a/source/de/anomic/search/QueryParams.java b/source/de/anomic/search/QueryParams.java
index 89b8e56b4..c209e8fe6 100644
--- a/source/de/anomic/search/QueryParams.java
+++ b/source/de/anomic/search/QueryParams.java
@@ -100,12 +100,14 @@ public final class QueryParams {
public int resultcount; // number of found results
public long searchtime, urlretrievaltime, snippetcomputationtime; // time to perform the search, to get all the urls, and to compute the snippets
public boolean specialRights; // is true if the user has a special authorization and my use more database-extensive options
+ public final String userAgent;
public QueryParams(final String queryString,
final int itemsPerPage,
final Bitfield constraint,
final Segment indexSegment,
- final RankingProfile ranking) {
+ final RankingProfile ranking,
+ final String userAgent) {
if ((queryString.length() == 12) && (Base64Order.enhancedCoder.wellformed(queryString.getBytes()))) {
this.queryString = null;
@@ -148,6 +150,7 @@ public final class QueryParams {
this.specialRights = false;
this.navigators = "all";
this.indexSegment = indexSegment;
+ this.userAgent = userAgent;
}
public QueryParams(
@@ -168,7 +171,8 @@ public final class QueryParams {
final String host,
final boolean specialRights,
final Segment indexSegment,
- final RankingProfile ranking) {
+ final RankingProfile ranking,
+ final String userAgent) {
this.queryString = queryString;
this.queryHashes = queryHashes;
@@ -200,6 +204,7 @@ public final class QueryParams {
this.handle = Long.valueOf(System.currentTimeMillis());
this.specialRights = specialRights;
this.indexSegment = indexSegment;
+ this.userAgent = userAgent;
}
public Segment getSegment() {
diff --git a/source/net/yacy/cora/protocol/RequestHeader.java b/source/net/yacy/cora/protocol/RequestHeader.java
index 237f6c485..3de365164 100755
--- a/source/net/yacy/cora/protocol/RequestHeader.java
+++ b/source/net/yacy/cora/protocol/RequestHeader.java
@@ -38,6 +38,7 @@ public class RequestHeader extends HeaderFramework {
public static final String CONNECTION = "Connection";
public static final String PROXY_CONNECTION = "Proxy-Connection";
public static final String KEEP_ALIVE = "Keep-Alive";
+ public static final String USER_AGENT = "User-Agent";
public static final String AUTHORIZATION = "Authorization";
public static final String WWW_AUTHENTICATE = "WWW-Authenticate";