Ruby on rails Solr查询与筛选器查询的工作方式不同
我使用solr已经有一段时间了(扮演solr),但是我遇到了一个非常奇怪的问题,我似乎无法工作 我有一个“文本”字段,我们称之为Ruby on rails Solr查询与筛选器查询的工作方式不同,ruby-on-rails,filter,solr,Ruby On Rails,Filter,Solr,我使用solr已经有一段时间了(扮演solr),但是我遇到了一个非常奇怪的问题,我似乎无法工作 我有一个“文本”字段,我们称之为 audience = [students, teachers, students_teachers, none] 当我发送查询时 q= audience:students 它只返回设置为students的对象 但如果我这样做了 fq= audience:students 我从[学生,学生和老师]那里得到了结果 我尝试过在过滤查询中添加引号、括号和各种各样的内容
audience = [students, teachers, students_teachers, none]
当我发送查询时
q= audience:students
它只返回设置为students的对象
但如果我这样做了
fq= audience:students
我从[学生,学生和老师]那里得到了结果
我尝试过在过滤查询中添加引号、括号和各种各样的内容,但似乎并不像我所期望的那样尊重它们。实际上,我在这里使用了fq的否定端,以向用户隐藏一些结果
我正在使用Solr1.4.1
有什么想法吗?我将要将选项更改为不重复使用的唯一单词。可能是名字中的_有问题
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
字段类型中的WordDelimiterFilterFactory可能正在从字符串“students\u teachers”生成术语“students”和“teachers” 因此,当您搜索“学生”时,它还匹配最初为“学生\教师”的字符串
顺便说一句:Solr是一个非常可配置的工具,可能非常复杂,我建议不要将其视为一个黑匣子,否则你很可能会有越来越多的“WTF时刻”。观众的字段类型是什么??观众在acts\u As\u Solr术语中既是“t”又是“s”。我使用的所有查询都不是字段类型。。。请检查solr模式。好的,很公平_t=>text和_s=>stringI最终确实从可用的受众值集中删除了“_”,并且所有这些都开始起作用。但是为什么它与q和fq不同呢?这是我觉得奇怪的部分。我做了一些事情,比如fq=观众:(学生)fq=观众:'students'这没关系,得到的结果与q=观众:学生q=观众:(学生)q=观众:'students'@MarkRedding:你在使用demax吗?你能检查一下Solr分析工具吗?