summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJoe Zhao <ztuowen@gmail.com>2015-05-11 18:38:39 +0800
committerJoe Zhao <ztuowen@gmail.com>2015-05-11 18:38:39 +0800
commitc69b39a9f149cc6b5c7270d7d864fb677bc83b34 (patch)
treebba8f4b244c5892265709b822751b9be56b4bf47 /tools
parent0f05a379b2c5df0b05c23fd91d697464bd250507 (diff)
downloadranksvm-c69b39a9f149cc6b5c7270d7d864fb677bc83b34.tar.gz
ranksvm-c69b39a9f149cc6b5c7270d7d864fb677bc83b34.tar.bz2
ranksvm-c69b39a9f149cc6b5c7270d7d864fb677bc83b34.zip
RidFile tested
Diffstat (limited to 'tools')
-rw-r--r--tools/dataProvider.h11
-rw-r--r--tools/fileDataProvider.h6
2 files changed, 14 insertions, 3 deletions
diff --git a/tools/dataProvider.h b/tools/dataProvider.h
index 1d430e4..028980e 100644
--- a/tools/dataProvider.h
+++ b/tools/dataProvider.h
@@ -40,7 +40,11 @@ public:
DataEntry* dat = new DataEntry;
dat->rank = d->rank;
dat->qid = d->qid;
- dat->feature = d->feature;
+ dat->feature.resize(d->feature.rows());
+ for (int i=0;i<d->feature.rows();++i)
+ {
+ dat->feature(i)=d->feature(i);
+ }
return dat;
}
inline std::vector<DataEntry*>& getData(){
@@ -59,7 +63,7 @@ public:
DataProvider():eof(false){};
bool EOFile(){return eof;}
- void getAllData(DataList &out){\
+ void getAllDataSet(DataList &out){\
out.clear();
DataList buf;
while (!EOFile())
@@ -68,9 +72,12 @@ public:
// won't work as data are discarded with every call to getDataSet
// out.getData().insert(out.getData().end(),buf.getData().begin(),buf.getData().end());
for (int i=0;i<buf.getSize();++i)
+ {
out.addEntry(out.copyEntry(buf.getData()[i]));
+ }
out.setfSize(buf.getfSize());
}
+ buf.clear();
}
virtual int getDataSet(DataList &out) = 0;
virtual int open()=0;
diff --git a/tools/fileDataProvider.h b/tools/fileDataProvider.h
index c4f6a4a..8ebda20 100644
--- a/tools/fileDataProvider.h
+++ b/tools/fileDataProvider.h
@@ -82,9 +82,11 @@ public:
}
pos = 0;
qid = 1;
+ read = true;
}
out.clear();
fsize = d.getfSize();
+ out.setfSize(fsize);
std::vector<DataEntry*> & dat = d.getData();
for (int i=0;i<d.getSize();++i)
if (i!=pos)
@@ -94,6 +96,7 @@ public:
e = new DataEntry;
e->rank=1;
dat[i]->qid=std::to_string(qid);
+ dat[i]->rank=qid;
}
else
{
@@ -103,12 +106,13 @@ public:
e->feature.resize(d.getfSize());
e->qid=std::to_string(qid);
for (int j = 0; j < fsize; ++j) {
- e->feature(i) = fabs(dat[i]->feature(j) -dat[pos]->feature(j));
+ e->feature(j) = fabs(dat[i]->feature(j) -dat[pos]->feature(j));
}
out.addEntry(e);
}
dat[pos]->qid=std::to_string(qid);
++qid;
+ dat[pos]->rank=qid;
while (pos<dat.size() && dat[pos]->rank!=-1)
++pos;
if (pos==d.getSize())