带有非索引字和语言特定字段的 eDismax 查询



我有 3 个文本字段:

  • content_en
  • content_sp
  • content_fr

上述每个字段都有自己的一组分析器、分词器和过滤器。他们也有自己的一套停用词。

我使用LangIdentifierProcessor(https://cwiki.apache.org/confluence/display/solr/Detecting+Languages+During+Indexing)来确定索引文档的语言,Solr会将该文档的内容写入正确的字段。

最后,我使用 eDisMax 解析器处理查询。我的 qf 参数映射到上面的 3 个字段,mm 参数设置为 100%。

这是我的问题:当我使用"黄色房屋"查询进行搜索时,Solr将返回所有带有术语"黄色"和"房屋"的文档。伟大。现在,当我查询"黄房子"时,我不会得到任何回复。调试一段时间后,我发现 Solr 为"黄房子"构造了一个类似于以下内容的查询:+((content_sp:

the | content_fr:the)(content_en:黄色 | content_sp:黄色 | content_fr:黄色)(content_en:房子 | content_sp:房子 | content_fr:房子))

请记住,我将 mm 设置为 100%,这意味着必须在要返回的文档中找到所有术语。由于术语"the"是我的英语字段的停用词,因此 Solr 不会将其包含在针对content_en字段的查询中,但它确实将其包含在我的其他两个字段的查询中,这显然会失败,因为这些字段对于英语文档没有任何内容。(由于上面链接中解释的 LangIdProcessor)。

现在 - 作为快速修复,我想我可以将所有停用词列出到一个文件中,但这是错误的。我还知道我可以为每个查询指定我的 qf 字段,这将允许我检测查询语言,然后指定要搜索的字段。但是我可以在 Solr 中做一些事情来指定这个(也许是某种搜索组件)吗?还是我的多语言方法不正确?

这是我

的问题:https://issues.apache.org/jira/browse/SOLR-3085

似乎没有明确的解决方法,所以我将把我所有的停用词合并在一起。(这可能会导致小问题,但与空结果集相比,这是一个很大的改进)。

mm.autoRelax方法看起来很有前途,但是它目前没有在Solr 4.10中实现(我知道我落后了)。

相关内容

  • 没有找到相关文章

最新更新