Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用solr短语_Solr_Phrases - Fatal编程技术网

如何使用solr短语

如何使用solr短语,solr,phrases,Solr,Phrases,我正在使用solr4.1.0,我正在尝试让常用词短语搜索工作。这意味着在搜索“猫”时,我希望显示包含此短语的文档,但不希望在某个地方或不同字段中显示包含“the”和“cat”的文档 我所拥有的: <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.Stand

我正在使用solr4.1.0,我正在尝试让常用词短语搜索工作。这意味着在搜索“猫”时,我希望显示包含此短语的文档,但不希望在某个地方或不同字段中显示包含“the”和“cat”的文档

我所拥有的:

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.CommonGramsFilterFactory" words="lang/stopwords.txt" format="snowball" />
            <filter class="solr.StopFilterFactory" words="lang/stopwords.txt" format="snowball" enablePositionIncrements="true" />
        </analyzer>
    </fieldType>

当“正常”字与stopwords.txt中的stopwords组合时,应输出特殊的gram标记。在analyze视图中,这与预期的效果一样,因此“猫”通常被编程为“猫”

我的客户所追求的解决方案是,当查询中的停止词与普通词结合使用时,只有具有这个确切短语(stop-word-2-shingle)的元素才应该匹配。总的默认操作符仍然是和

例如,我有以下字段的文档

  • id:1;标题:我的猫在自然环境中;世界上最好的动物是猫
  • id:2;标题:猫是邪恶的;大家都知道猫是纯粹的邪恶
  • id:3;标题:猫解谜;我们的猫叫夏洛克
  • 以下是我想要达到的目标的例子。。。基本上,用户在搜索、查询和操作员方面或多或少是文盲,因此搜索应该解释输入并“做正确的事情”。正确的做法是:

  • 输入:cat
    结果:文件1、2、3(为方便起见不评分)
  • 输入:猫世界
    结果:文件1
    而且是默认的
  • 输入:cat everyone
    结果:文件2
    跨越多个领域
  • 输入:cat
    结果:文件1 因为只有这个字段包含短语“猫”,它在查询过程中以某种方式神奇地出现
  • 输入:可爱的猫
    reult:[]
    因为没有任何文档包含短语“thenice”,算法会将其解释为一个常用词短语
  • 输入:猫的世界
    结果:文件1
  • 输入:纯 结果:[]
  • 这背后的原因是,客户对某些(精心挑选的)停止词有一些具体的想法。

    那么,这是一种现实的做法吗?在将查询传递给solr之前,是否需要进行某种查询预解析?还有其他方法可以达到预期的结果吗?

    您是否尝试过查询
    q=text:“*the cat*”
    ?您甚至不必使用*,只需查询q=text:“the cat”谢谢,这(以及我在schema.xml中修复的一个bug)至少会产生命中,因此“the cat”会找到“the cat”。现在我看到我必须改变我的问题,因为我的客户真正想要的是稍微不同的东西;)