Solr - 如何匹配所有用户提供的令牌,而不仅仅是一些?

时间:2011-12-12 21:08:47

标签: solr lucene

我正在尝试使用Solr并尝试获取查询以仅检索所有提供的令牌匹配的文档。

例如,假设我有一个名为 data 的字段,当索引时,它使用PatternTokenizer在分隔字符上拆分传入字符串,例如: '/'。对于输入字符串“Foo / Bar / Baz”,我希望获得三个令牌(如果我对文档的理解是正确的!)。我最后添加了一些文档:

Foo / Bar / Baz ==> Foo,Bar,Baz

Foo / Far / Faz ==> Foo,Far,Faz

Boo / Bar / Baz ==> Boo,Bar,Baz

当我来查询这个字段时,我得到的结果我并不是很期待。使用查询:

+data:Foo/Bar

我希望这可以匹配包含两者 Foo和Bar的文档,但是它会返回至少包含Foo或Bar的文档,并对两个术语都更高的文档进行评分。除了改变查询以使其类似于:

+data:Foo +data:Bar

有没有办法改变行为,以便不是匹配我的所有3个示例文档,而只匹配一个?

该实验使用Solr 4.0的夜间构建完成。

由于

1 个答案:

答案 0 :(得分:3)

您可以在schema.xml中将默认运算符设置为AND,这将使所有查询成为AND搜索。

http://wiki.apache.org/solr/SchemaXml#Default_query_parser_operator

您还可以通过将q.op = AND添加到solr网址来更改每个查询。

http://solrhost/solr/select?q=solr+lucene&q.op=AND