1
我已经定义为字段类型如下:Solr的:如何条款的顺序传递给字段作为单个查询字符串
<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2"/>
</analyzer>
我要查询的字段(名为passage_body)这种类型如下(例如):
q = passage_body:(DPGC召集的术语)
问题是索引这个字段中的文本时,分析器工作得很好。但是,在查询时,如果将debugQuery参数设置为true,则可以看到该字段未按预期进行分析(不形成带状疱疹)。这是调试输出:
<str name="rawquerystring">passage_body:(the term of dpgc convener)</str><str name="querystring">passage_body:(the term of dpgc convener)</str><str name="parsedquery">passage_body:term passage_body:dpgc passage_body:convener</str><str name="parsedquery_toString">passage_body:term passage_body:dpgc passage_body:convener</str>
当我在Solr admin中分析查询时,输出如预期。 我甚至尝试将标准查询解析器的“母猪”查询参数设置为false,但即使这样也行不通。
总之,这是我的最终查询:
http://localhost:8983/solr/mnitdocs/select?q=passage_body:(the term of dpgc convene)&sow=false&debugQuery=true
概括地说,我想匹配查询的瓦至passage_body的带状疱疹。 请建议方法。其他建议也值得欢迎,因为我是Solr的新手。
我正在使用Solr 5.3.1。
只是一个猜测,但你有没有尝试url编码整个q =有效载荷:passage_body%3A(%20term%20of%20dpgc%20convene) –
你可以发表一个你想如何解析查询字符串的例子吗? –
我想将查询字符串作为“DPGC Convener的术语”传递。我使用引号来表示它是单个字符串,但不是短语。现在分析器应该处理这个字符串(标记,制作带状疱疹)。 – user7568303