小编seh*_*ehe的帖子

Solr:fieldNorm每个文档不同,没有文档提升

我希望我的搜索结果按照他们正在进行的分数排序,但分数计算不正确.这就是说,不一定是不正确的,但与预期不同,我不知道为什么.我的目标是删除任何改变分数的内容.

如果我执行匹配两个对象的搜索(其中ObjectA的分数高于ObjectB),则首先返回ObjectB.

让我们说,对于这个例子,我的查询是一个单词:"apples".

ObjectA的标题:"苹果是苹果"(2/3条款)
ObjectA的描述:"苹果 - 苹果中有苹果,现在苹果遍布苹果的所有苹果!" (6/18条款)
ObjectB的标题:"苹果很棒"(1/3条款)
ObjectB的描述:"苹果室里有苹果,现在苹果在苹果上都变坏了!" (4/18条款)

标题字段没有提升(或者更确切地说,提升为1),描述字段的提升为0.8.我没有通过solrconfig.xml或通过我正在通过的查询指定文档提升.如果有另一种指定文档提升的方法,那么我有可能错过一个.

在分析explain打印输出之后,看起来ObjectA 正在计算比ObjectB更高的分数,就像我想要的那样,除了一个区别:ObjectB的标题fieldNorm总是高于ObjectA.


以下是explain打印输出.您知道:标题字段是mditem5_tns,描述字段是mditem7_tns:

ObjectB:
1.3327172 = (MATCH) sum of:
  1.0352166 = (MATCH) max plus 0.1 times others of:
    0.9766194 = (MATCH) weight(mditem5_tns:appl in 0), product of:
      0.53929156 = queryWeight(mditem5_tns:appl), product of:
        1.8109303 = idf(docFreq=3, maxDocs=9)
        0.2977981 = queryNorm
      1.8109303 = (MATCH) fieldWeight(mditem5_tns:appl in 0), product of:
        1.0 = tf(termFreq(mditem5_tns:appl)=1)
        1.8109303 = idf(docFreq=3, maxDocs=9)
        1.0 = …
Run Code Online (Sandbox Code Playgroud)

lucene solr relevance solr-boost

6
推荐指数
1
解决办法
4637
查看次数

参数的最佳实践?

通常认为将参数作为指针而不是作为值传递时更好吗?显然它在很大程度上取决于情况,但是当有选择时,使用指针会更好吗?

这只是出于记忆的原因吗?

如果它是真的,指针或引用,最好通过什么?

c++ coding-style

6
推荐指数
1
解决办法
3838
查看次数

Spirit无法将属性赋给单元素结构(或融合序列)

我的目标是让我的qi::grammar返回属性.spirit::lexer尽管如此,我在这方面遇到了很大的困难.

我希望用下面给定的语法,如果我用它来调用它spirit::qi::parse(begin, end, grammar, output);,struct ident output它将具有解析的lexeme的内容.

该错误似乎主要流出这一行: start %= lexer.identifier;

系统说明

  • 提升1.47.0
  • Mac OS X 10.7.2
  • clang ++或g ++(下面显示的错误来自clang ++)

编译命令

g++ -g -c -O0 -Wall -DBOOST_SPIRIT_DEBUG -DBOOST_SPIRIT_LEXERTL_DEBUG -DBOOST_SPIRIT_USE_PHOENIX_V3 -DBOOST_SPIRIT_ACTIONS_ALLOW_ATTR_COMPAT reduced.cpp
Run Code Online (Sandbox Code Playgroud)

源代码

#include <boost/fusion/include/adapt_struct.hpp>

#include <boost/spirit/home/lex.hpp>
#include <boost/spirit/home/lex/lexer/lexertl/lexer.hpp>
#include <boost/spirit/home/qi.hpp>

namespace spirit = boost::spirit;

struct ident {
    std::string value;
};

BOOST_FUSION_ADAPT_STRUCT(ident,
        (std::string, value)
        )

struct my_lexer : spirit::lex::lexer< spirit::lex::lexertl::actor_lexer<> > {
    spirit::lex::token_def<std::string> identifier;
};

struct my_grammar : spirit::qi::grammar<my_lexer::iterator_type, ident()> {
    my_grammar(const …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-spirit boost-spirit-qi

6
推荐指数
1
解决办法
1023
查看次数

C++中具有虚拟继承的类大小

#include<iostream>

using namespace std;

class abc
{
    int a;
};
class xyz : public virtual abc
{
    int b;
};

int main()
{
    abc obj;
    xyz obj1;
    cout<<endl<<sizeof(obj);
    cout<<endl<<sizeof(obj1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

答案将取决于编译器,但当我看到这个结果时,我感到很惊讶

~/Documents/workspace/tmp ‹.rvm-›  $ ./class_sizes   

4
16
Run Code Online (Sandbox Code Playgroud)

如果我删除虚拟关键字,那么分配的大小分别为4和8,这正是我的预期.

为什么额外的空间被准确占用?我怀疑它是针对vptr表或其他类似但不确定的.

c++ virtual-inheritance

6
推荐指数
1
解决办法
1866
查看次数

Django Haystack - 如何提升领域?

我在Django Haystack 1.2.5中遇到了一些问题.我需要提升一个领域,但显然它不起作用.我正在使用Solr 1.4.1.

我的索引:

class JobsTextIndex(indexes.SearchIndex):
    text            = indexes.CharField(document=True, use_template=True)
    job_title       = indexes.CharField(model_attr='job_title', boost=1.50)
    job_description = indexes.CharField(model_attr='job_description')
    country_ad      = indexes.CharField(model_attr='country_ad')
    zone_ad         = indexes.CharField(model_attr='zone_ad', faceted=True)
    location_ad     = indexes.CharField(model_attr='location_ad', faceted=True)
    date_inserted   = indexes.DateTimeField(model_attr='date_inserted')

    def index_queryset(self):
    """Used when the entire index for model is updated."""
    return JobsadsText.objects.filter(date_inserted__lte=datetime.datetime.now())
Run Code Online (Sandbox Code Playgroud)

我在job_title"boost = 1.50",但这显然不起作用,这是Solr生成的:

INFO: [core0] webapp=/solr path=/select/ params={facet=on&sort=date_inserted+desc&fl=*+score&start=0&q=arquiteto&facet.field=location_ad_exact&facet.field=zone_ad_exact&wt=json&fq=django_ct:(myapp.jobstext)&rows=20} hits=65 status=0 QTime=5 
Run Code Online (Sandbox Code Playgroud)

我正在做的查询是这样的:

sqs = SearchQuerySet().facet('zone_ad').facet('location_ad').order_by('-date_inserted')
Run Code Online (Sandbox Code Playgroud)

有人能给我一些线索,让我了解Haystack Boost的工作需求吗?

最好的祝福,


更新1:我需要更加重视"job_title"字段.例如,如果我正在搜索"程序员"这个词,我首先需要显示在"job_title"字段中按"日期"排序的"程序员"的结果,然后是"程序员"字样的结果. "job_description"字段.干草堆增压是实现这一目标的正确工具吗?

django solr django-haystack solr-boost

6
推荐指数
1
解决办法
2371
查看次数

将输出重定向到C中的文件

我C编码的一个基本的壳,用于执行基本命令它会执行命令ls,ls -al,ls -al | more等.

我想在我的shell中执行以下命令.喜欢 ;

ls -al > a.txt
Run Code Online (Sandbox Code Playgroud)

这将给我a.txt包含ls -al进程输出的文件.我找到了一个解决方案,它正在改变我的shell中的命令[command1] | tee [filename].在这种情况下,它将ls -al > a.txt改为ls -al | tee a.txt.但是这个过程也将输出提供给文件和终端.如何在终端中停止打印输出.

或者是否有更好的解决方案而不是使用tee命令.提前致谢...

linux shell

6
推荐指数
2
解决办法
3万
查看次数

使用VIM来调试Eclipse和PyDev之类的python

有没有办法使用vim来调试python程序,并使它看起来/行为有点像Eclipse与PyDev插件?

我的意思是:

  • 它能够进行调试(这是正确的术语吗?)
  • 在程序执行时查看状态所有变量
  • 能够看到程序中调试过程的位置 - 也许是行突出显示?

我知道Eclipse是一个全功能的IDE,而VIM是一个轻量级的通用文本编辑器(并且每个都有自己的一组功能)但我喜欢能够在控制台中工作,因为我有一台Windows 7机器,通常使用Ubuntu Virtualbox来学习和使用python.

我做了一些研究并找到了以下的东西,但它们似乎都没有完成我想要的所有内容:

  1. 在python程序中说import pdb然后在代码中设置一个断点.这是逐行的,并没有让我看到变量的状态
  2. gdb和Clewn.我无法得到这个设置,所以如果这是我的答案,请告诉我,我会深入挖掘

如果我误读上述任何一个的文档也让我知道,我会重新开始.

谢谢!

python eclipse debugging vim pydev

6
推荐指数
1
解决办法
2869
查看次数

算术表达式上下文中的宏扩展?

我在网站上看到了以下代码.我无法理解结果是如何形成的11,而不是2513.

为什么我在想,25因为SQ(5) 5*5

或者13因为

SQ(2) = 4;

SQ(3) = 9;

可能是最终的结果将是13 (9 + 4) 惊讶地看到结果为11.结果如何11

using namespace std;
#define SQ(a) (a*a)
int main()
{
    int ans = SQ(2 + 3);
    cout << ans << endl;
system("pause");
}
Run Code Online (Sandbox Code Playgroud)

c c++

6
推荐指数
2
解决办法
713
查看次数

提升:如何从现有属性树中获取子树?

我试图从这样的boost::ptree使用中得到一个子树get_child:

我有:

class ConfigFile
{
  ptree pt;
  ConfigFile(const string& name)
  {
    read_json(name, pt);
  }
  ptree& getSubTree(const string& path)
  {
    ptree spt = pt.get_child(path);
    return spt;
  }
}
Run Code Online (Sandbox Code Playgroud)

当我打电话的时候

ConfigFile cf("myfile.json");
ptree pt = cf.getSubTree("path.to.child")
Run Code Online (Sandbox Code Playgroud)

函数在返回后崩溃了

terminate called after throwing an instance of 'std::length_error'
Run Code Online (Sandbox Code Playgroud)

有人可以帮我弄这个吗?我究竟做错了什么?

c++ boost boost-propertytree

6
推荐指数
1
解决办法
4295
查看次数

如何使用Beast C ++库从HTTP重定向到HTTPS?

我正在研究Boost.Beast库。我尝试提出一个请求,其响应为:

HTTP/1.1 301 Moved Permanently
Cache-Control: public
Content-Type: text/html; charset=UTF-8
Location: https://www.example.com/target/xxx/
Run Code Online (Sandbox Code Playgroud)

然后,我尝试使用此位置字段发出请求,但收到错误的请求响应。

我该如何进行重定向?有例子吗?

这是我的代码:

boost::asio::io_service ios;
tcp::resolver resolver{ios};
tcp::socket socket{ios};
auto const lookup = resolver.resolve( tcp::resolver::query(host, port) );
boost::asio::connect(socket, lookup);

// Set up an HTTP GET request message
http::request<http::string_body> req{http::verb::get, target, 11};
req.set(http::field::host, host);
req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);

// Send the HTTP request to the remote host
http::write(socket, req);

// This buffer is used for reading and must be persisted
boost::beast::flat_buffer buffer;

// Declare a container to hold the response
http::response<http::dynamic_body> …
Run Code Online (Sandbox Code Playgroud)

c++ boost beast boost-beast

6
推荐指数
1
解决办法
1966
查看次数