autoGeneratePhraseQueries =“false”和WordDelimiterFilterFactory

时间:2011-04-26 10:17:55

标签: solr

我是solr的新手。我的solr实例版本是:

Solr规格版本:3.1.0
Solr实施版本:3.1.0 1085815 - grantingersoll - 2011-03-26 18:00:07
Lucene规范版本:3.1.0
Lucene实现版本:3.1.0 1085809 - 2011-03-26 18:06:58
当前时间:4月26日星期二08:01:09 CEST 2011
服务器开始时间:Tue Apr 26 07:59:05 CEST 2011

我对textgen类型有以下定义:

<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
  <analyzer type="index">
 <tokenizer class="solr.WhitespaceTokenizerFactory"/>
 <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
 <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" preserveOriginal="1"/>
 <filter class="solr.LowerCaseFilterFactory"/>
 <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15" side="front" preserveOriginal="1"/>
  </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"
 enablePositionIncrements="true"/>
 <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" preserveOriginal="1"/>
 <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

我在索引中使用此类型作为名称字段。如你所见,我正在使用autoGeneratePhraseQueries =“false”但是对于查询sony vaio 4gb我在调试中得到以下查询:

<lst name="debug"> 
  <str name="rawquerystring">sony vaio 4gb</str> 
  <str name="querystring">sony vaio 4gb</str> 
  <str name="parsedquery">+name:sony +name:vaio +MultiPhraseQuery(name:"(4gb 4) gb")</str> 
  <str name="parsedquery_toString">+name:sony +name:vaio +name:"(4gb 4) gb"</str>

您是否知道如何避免使用此MultiPhraseQuery?

1 个答案:

答案 0 :(得分:0)

Robert Muir在solr用户邮件列表上回答:

  

你在solrconfig.xml中有什么用?   luceneMatchVersion?

     

如果你没有设置这个,那就去吧   默认为“Lucene 2.9”仿真   所以旧的solr 1.4配置工作了   同样的方式。我试过你的例子吧   在这里工作得很好,我猜   这可能发生了什么。

     

默认值   example / solrconfig.xml看起来像   这样:

<!-- Controls what version of Lucene various components of Solr
    adhere to.  Generally, you want to use the latest version to
    get all bug fixes and improvements. It is highly recommended
    that you fully re-index after changing this setting as it can
    affect both how text is indexed and queried.
 -->
<luceneMatchVersion>LUCENE_31</luceneMatchVersion>

它对我有用。