Search 有人能帮我理解这种情况下的Solr搜索行为吗?
查询如下:-(请参阅) 索引字段具有与上述输入查询中完全相同的标记。但Solr搜索结果为零。 如果查询是这样的:-(请参阅 然后我可以在结果中找到文档 附言:我能够得到(Pro),Profi,Profise等查询的文档结果。 这里是附加的图片Search 有人能帮我理解这种情况下的Solr搜索行为吗?,search,solr,schema,Search,Solr,Schema,查询如下:-(请参阅) 索引字段具有与上述输入查询中完全相同的标记。但Solr搜索结果为零。 如果查询是这样的:-(请参阅 然后我可以在结果中找到文档 附言:我能够得到(Pro),Profi,Profise等查询的文档结果。 这里是附加的图片 首先,下次请在你的问题中包含相关细节,因为图像很难搜索,很难获得你问题的概述,而且对于那些视力不好的人来说很难阅读 对于您的实际问题,问题是您有一个空白标记符。这只会打断空白上的单词,例如。索引文档包含您的术语(foo),这意味着只有(foo)匹配(因
首先,下次请在你的问题中包含相关细节,因为图像很难搜索,很难获得你问题的概述,而且对于那些视力不好的人来说很难阅读 对于您的实际问题,问题是您有一个空白标记符。这只会打断空白上的单词,例如
。索引文档包含您的术语(foo)
,这意味着只有(foo)
匹配(因为标记符只打断空白,(
或)
不是空白)
foo(bar)
将被索引为两个标记,foo
和(bar)
。搜索(bar
将不匹配
使用StandardTokenizer获得您想要的行为,或者使用WordDelimiterGraphFilterFactory将单词分解为更多的标记。您可以在问题中包含
debug.parsedQuery
值的输出吗?我还想知道您使用的debug.QParser
解析代码是什么。请不要将代码作为im发布年龄。您希望我们如何更正或对其进行注释?请在您的问题中的代码框中包含代码。感谢您的输入。下次将尝试发布一个干净的问题。至于当前问题,我知道foo(bar)
将被索引为foo
和(bar)
,在我的情况下,(bar)
(或(b
或(ba
)正在搜索中提供所需的文档,而(条形)
没有提供所需的结果。我需要将令牌捕获为(条形)
本身,这就是为什么要使用WhitespaceTokenizer。这是由EdgeNgramFilter
和您附加的词干过滤器造成的。如果您不希望出现这种行为,请删除它们(我错过了您问题的这一部分,因为图像中有文本,不知道应该查找什么)我需要有EdgeNgramFilter
,以便(b
或(ba
或(bar
或(bar)
可以与输入查询匹配,并且我还需要考虑特殊字符,如@
,!
,,。
等,这就是为什么我需要空白标记符的原因。尽管如此,当输入的查询是(bar)时,我仍然看不到这种特殊情况的结果
但得到0个结果。请帮助!您是否正确地转义了(
-s)?请记住(
和)
在Lucene查询语法中有特殊意义(即字段1:(val1和val2),其中(
和)
不被视为查询的一部分。您可以通过在这些字符前面加\来转义它们。感谢@MatsLindh的响应。因此,根据您的回答,我已经实现了这个标记器
,而不是空白标记器
,但我仍然得到相同的响应。您能指导我实现一个标记器,以便正确转义括号?(还要注意,我的solr版本是5.2.1)