0

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

q=word1 word2

q="word1 word2"

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

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

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

编辑:

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

我有 'HelloWorld' 文本索引,我可以用 q=helloWoRLD 但不能用 q="helloWoRLD" 找到它:这个单元测试被破坏了,因为我在所有查询中都添加了引号。我不明白 q=helloWoRLD 和 q="helloWoRLD" 之间有什么区别,因为它仍然是 1 个术语搜索吗?

4

1 回答 1

1

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

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

我不太了解您的 hello world 问题,因此无法对此发表评论。希望这可以帮助

于 2013-02-14T09:59:19.770 回答