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 管理员中分析查询时,输出符合预期。我什至尝试将标准查询解析器的"sow"查询参数设置为 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。

我想出了问题所在。将查询参数"sow"设置为 false 可以正常工作。只是它仅在最新版本的 solr(6.5.0( 中可用。所以我切换到 Solr 6.5.0。

最新更新