Solr / Lucene中q = word1 word2和q =“word1 word2”之间的差异

时间:2013-02-14 09:22:46

标签: solr lucene

有人可以告诉我有什么区别:

q=word1 word2

q="word1 word2"

我正在尝试匹配使用KeywordTokenizerFactory分析的关键字“word1 word2”(是的,我的关键字可以有空格),它似乎只有在我在查询中添加引号时才有效。

顺便说一句,我使用Solr扩展Dismax,不知道这是否重要。 语法是:

q="some text"&qf=KeywordField&qf=FrenchtextField

修改

我引用的问题是我有另一个包含fulltexte的字段(分析是基本的,接近FrenchAnalyzer,包括小写过滤器)

我将'HelloWorld'文本编入索引,我可以使用q = helloWoRLD找回它,但不能使用q =“helloWoRLD”:由于我在所有查询中都添加了引号,因此单元测试已被破坏。我不明白q = helloWoRLD和q =“helloWoRLD”之间的区别是什么,因为它仍然是1期搜索权?

1 个答案:

答案 0 :(得分:1)

Lucene查询语法使用空格来分隔术语,因此您在“q”和“word2”字段中搜索“word1”但没有指定字段(我不确定当没有指定字段时lucene的行为如何)。

  • 如果你想在字段q中搜索字符串“word1 word2”(连续的单词),那么你将不得不使用引号,即q =“word1 word2”
  • 如果要搜索包含这两个单词的记录(非连续),则可以搜索“q = word1 AND q = word2”

我不太关注你的世界问题所以不能对此发表评论。希望这有帮助