缩放结果集中的字段值

时间:2015-07-10 06:40:36

标签: solr solr4

我正在使用scale函数来规范化1到3之间的字段值。问题是这些值相对于结果集没有规范化,而是归一化所有索引文档。

例如:

/select?q=id:173540413&fl=id,scale(id, 1, 2) 
id,"scale(id, 1, 2)"
173540413,1.9903924

/select?q=id:(173540413 173540377)&fl=id,scale(id, 1, 2) 
id,"scale(id, 1, 2)"
173540413,1.9903924
173540377,1.9903922

期望的结果是:

/select?q=id:173540413&fl=id,scale(id, 1, 2) 
id,"scale(id, 1, 2)"
173540413,1

/select?q=id:(173540413 173540377)&fl=id,scale(id, 1, 2) 
id,"scale(id, 1, 2)"
173540413,2
173540377,1

是否有其他方法来扩展结果,可能没有使用比例尺?

2 个答案:

答案 0 :(得分:2)

在Solr中有一种迂回的方法来实现这一目标。

Solr的缩放功能在针对依赖于查询的字段时使用时的行为方式与针对的字段使用时的行为不同。

因此,当您尝试扩展非依赖于查询的' id' 字段时,Solr会将整个文档集视为可扩展。这将改变您从整个文档集而不是查询结果集中获取的最小值和最大值。然而,当您缩放查询相关值(如查询($ q)(这是针对searchterm的文档的 TF-IDF 文本相似性得分)时,Solr仅考虑搜索结果集以获得缩放的最小值和最大值。

现在,我们想要的是第二种选择。所以,我们做这样的事情:

q = searchterm& fl = id, scale(sub(sum(id,query($ q)),query($ q)),1,2)

这就是我们在字段中所做的事情:id + query($ q) - query($ q)

这使得Solr认为这是一个依赖于查询的字段,而实际上它的评估结果是相同的' id'领域。这将为您提供平滑的 [1,2]范围缩放

除了 scale()之外,我相信这种方法也适用于其他功能查询,例如 max() min (),它对整个文档集而不仅仅是查询结果集进行操作。

答案 1 :(得分:0)

您可以使用Stats Component获取您的集合的最小值/最大值,然后在中间件中自行进行缩放。

min下面的元素应该有一个max // Capture button clicks btnUpload.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { // Locate the image in res > drawable-hdpi for (int i = 0; i < mangImage.length; i++) { InputStream in = getResources().openRawResource(mangImage[i]); try { ParseObject imgupload = new ParseObject("Map"); byte[] data = getBytesFromInputStream(in); String nameFile = getResources().getResourceEntryName(mangImage[i])+".tmx"; ParseFile file = new ParseFile(nameFile, data); // byte[] image = stream.toByteArray(); // ParseFile file = new ParseFile("" + mangImage[i] + ".tmx", image); file.saveInBackground(); // Create a column named "ImageName" and set the string imgupload.put("nameMap", "" +nameFile); // Create a column named "ImageFile" and insert the image imgupload.put("fileMap", file); // Create the class and the columns imgupload.saveInBackground(); } catch (IOException e) { e.printStackTrace(); } } Toast.makeText(UploadActivity.this, "Image Uploaded", Toast.LENGTH_SHORT) .show(); } }); 键,用于指示查询结果中值的极限。