2013-02-14 55 views
0

有人能告诉我是什么样的区别是:我想的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

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

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

我不太关注你的世界问题,所以不能评论。希望这可以帮助

+0

我使用eDismax,因此我不需要指定q =属性上的字段:check http://wiki.apache.org/solr/ExtendedDisMax – 2013-02-14 10:02:00

+0

请参阅我的编辑请尝试更清晰关于helloWoRLD部分 – 2013-02-14 10:12:01

+0

感谢您的更新...我不认为我可以在这里得到更多的帮助,因为我不熟悉Dismax。听起来问题可能与dismax或你的分析仪有关,但我只是在猜测 – Edd 2013-02-14 10:33:01