我正在努力研究如何提高solr搜索结果的得分.我的应用程序需要从solr结果中获取分数,并根据查询的结果有多好来显示一些"星星".5星=差不多/精确到0星,意味着不能很好地匹配搜索,例如只有一个元素命中.然而,我得到的分数从1.4到0.8660254都返回结果,我会给5星.我需要做的是以某种方式将这些结果转换为百分比,以便我可以用正确的星数来标记这些结果.
我运行的查询给出了1.4分:
euallowed:true AND(等级:"2:1")
给我0.8660254分数的查询是:
euallowed:true AND(等级:"2:1"或等级:"1st")
我已经更新了Similarity,以便tf和idf返回1.0,因为我只对文档中有一个术语而不是文档中该术语的编号感兴趣.这就是我的相似性代码:
import org.apache.lucene.search.Similarity;
public class StudentSearchSimilarity extends Similarity {
@Override
public float lengthNorm(String fieldName, int numTerms) {
return (float) (1.0 / Math.sqrt(numTerms));
}
@Override
public float queryNorm(float sumOfSquaredWeights) {
return (float) (1.0 / Math.sqrt(sumOfSquaredWeights));
}
@Override
public float sloppyFreq(int distance) {
return 1.0f / (distance + 1);
}
@Override
public float tf(float freq) {
return (float) 1.0;
}
@Override
public float idf(int docFreq, int numDocs) {
//return (float) (Math.log(numDocs / (double) (docFreq + …Run Code Online (Sandbox Code Playgroud) 我需要一些帮助清除Zend_Form并向元素添加过滤器.现在我的印象是,当您向表单添加过滤器时,当表单发布时,过滤器作为控制器中的分派的一部分执行.
然而,在测试我的表单时我的恐怖过滤器StripTags似乎没有运行,我在数据中获取带有HTML标签的数据.
我的Form元素看起来像这样.
$address1 = new Zend_Form_Element_Textarea('address1');
$address1->addFilter('StripTags')
->addFilter('StringTrim')
->setAttrib('cols', 30)
->setAttrib('rows', 5)
->removeDecorator('DtDdWrapper')
->removeDecorator('label')
->removeDecorator('HtmlTag')
Run Code Online (Sandbox Code Playgroud)
但是,如果我在文本区域中放入一些带有html标签的数据,然后检查表单是否有效使用
$formData = $this->_request->getPost();
if($form->isValid($formData){
...
Run Code Online (Sandbox Code Playgroud)
数据随其中的标签一起返回.它只在我通过strip_tags()函数传递数据时删除.
我想我的问题是StipTags应该过滤器,如果是这样,为什么不呢?我在这里想念的是什么
当尝试使用dojo.io.iframe上传图像文件<2MB时,今天遇到了一个有趣的问题.
我调用了处理表单的函数,但在将表单发布到服务器之前,我收到以下错误:
TypeError:ifd.getElementsByTagName("textarea")[0]未定义
我用于处理表单帖子的函数是:
function uploadnewlogo(){
var logoDiv = dojo.byId('userlogo');
var logoMsg = dojo.byId('uploadmesg');
//prep the io frame to send logo data.
dojo.io.iframe.send({
url: "/users/profile/changelogo/",
method: "post",
handleAs: "text",
form: dojo.byId('logoUploadFrm'),
handle: function(data,ioArgs){
var response = dojo.fromJson(data);
if(response.status == 'success'){
//first clear the image
//dojo.style(logoDiv, "display", "none");
logoDiv.innerHTML = "";
//then we update the image
logoDiv.innerHTML = response.image;
}else if(response.status == 'error'){
logoMsg.innerHTML = data.mesg;
}else{
logoMsg.innerHTML = '<div class="error">Whoops! We can not process your image.</div>';
}
},
error: function(data, …Run Code Online (Sandbox Code Playgroud) 我正在努力弄清楚如何在solr文档中存储n + 1对象的最佳方法.
我正在将sol/resume文档存储在solr文档中.我正在寻找存储两种不同的数据类型"教育"和"就业"
如果我们看看教育,对象看起来像这样:
{
"establishment" => 'Oxford',
"Subject" => 'Computing',
"Type" => 'Degree',
"Grade" => '2:1'
}
Run Code Online (Sandbox Code Playgroud)
CV可以包含n + 1个这些对象,具体取决于CV的内容.搜索需要能够看到,当我搜索具有Establishment = Oxford&Subject = Computing&Grade = 2:1的CV时,它与该对象匹配,而不是具有相同主题和等级的不同机构.
一个多值的我认为没有帮助或者可以存储这些类型的对象中的n + 1个.
我的问题是如何设置solr以便能够将这种类型的数据存储在一个"CV"Solr文档中,以便它可以作为索引的一般搜索的一部分进行搜索?
我正在为我的网络应用程序编写一个电子邮件模块,该模块在完成注册等任务时向用户发送html电子邮件.现在,由于此电子邮件的格式可能会发生变化,因此我决定使用模板html页面作为电子邮件,其中包含需要替换的自定义标记,例如%fullname%.
我的函数有一个数组格式的数组(%fullname%=>'Joe Bloggs'); 使用密钥作为标记标识符以及需要替换它的值.
我尝试过以下方法:
$fp = @fopen('email.html', 'r');
if($fp)
{
while(!feof($fp)){
$line = fgets($fp);
foreach($data as $value){
echo $value;
$repstr = str_replace(key($data), $value, $line);
}
$content .= $repstr;
}
fclose($fp);
}
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?因为目前只有1个标签被取代......我是在正确的道路上还是在数英里之外?
谢谢...
您好我正在编写一个大型存储过程,它创建一个动态报表,大小为n列,前6个是常量,其余依赖于传递给过程的几个参数来创建具有所需列的表.
我遇到的问题是使用以下TSQL
DECLARE @columnname VARCHAR(50)
SET @columnname = 'on_' + @description
IF NOT EXISTS(SELECT * FROM syscolumns WHERE id = OBJECT_ID('reports')
AND NAME = @columnname)
BEGIN
ALTER TABLE reports ADD @columnname VARCHAR(50) NULL
END
Run Code Online (Sandbox Code Playgroud)
我在上面代码的ALTER TABLE语句中的@columnname上遇到了语法错误.
此外,由于我是新手,我不确定这是否是执行此操作的最佳方式,或者是否有更好的方法在TSQL中生成所需的动态表.
我遇到了一些我在C#中编写的代码问题.
我正在使用MailMessage和SMTP组件发送文档.我将要发送的文件复制到临时目录(例如c:\ temp),遍历文档并将它们附加到电子邮件中.
电子邮件发送正常,但是当我尝试从临时目录中删除文件时,我收到以下错误:
该进程无法访问该文件,因为该文件正由另一个进程使用
我不明白为什么会这样.下面是处理文档的代码
public void sendDocument(String email, string barcode, int requestid)
{
string tempDir = @"c:\temp";
//first we get the document information from the database.
Database db = new Database(dbServer, dbName, dbUser, dbPwd);
List<Document> documents = db.getDocumentByID(barcode);
int count = 0;
foreach (Document doc in documents)
{
string tempPath = tempDir + "\\" + doc.getBarcode() + ".pdf";
string sourcePath = doc.getMachineName() + "\\" + doc.getFilePath() + "\\" + doc.getFileName();
//we now copy the file from the source …Run Code Online (Sandbox Code Playgroud) 我正在寻找有关如何在 AD 中创建邮件联系人的一些指南。这是SO Q#1861336的后续问题。
我想要做的是将大量联系人对象添加到 Active Directory 中的 OU 中。我一直在使用CodeProject上的示例,但是它们仅展示如何创建新用户等。
如何使用 C# 创建联系人?它是否类似于创建新用户但具有不同的 LDAP 类型属性?
我的计划是然后运行enable-mailcontact cmdlet powershell 脚本以使Exchange 2010 能够查看GAL 中的联系人。
正如您从我的问题中看到的,我通常不处理 c# 或 Active Directory,因此在我开始使用这把装满子弹的枪之前,任何帮助/指针都会非常有用。
谢谢,
授予
嗨,我正在尝试使用dojo将javascript对象数组发回服务器.
我有一组数据,如下所示:
var elements = [
myobj = {id:"1", name:"myname", title:"mytitle"},
myobj = {id:"2", name:"myname2", title:"mytitle2"}
]
Run Code Online (Sandbox Code Playgroud)
我想将此作为json字符串发布回服务器以由PHP脚本处理.但是dojo.toJson只会对单个对象进行seralise.
如何将整个对象数组转换为可以发布到后端进行处理的json字符串?
非常感谢
c# ×2
dojo ×2
lucene ×2
php ×2
search ×2
solr ×2
delete-file ×1
email ×1
javascript ×1
json ×1
parsing ×1
sql-server ×1
t-sql ×1
tf-idf ×1
zend-form ×1