나는 solr을 처음 사용했습니다. 내 SOLR 인스턴스 버전은 다음과 같습니다autoGeneratePhraseQueries = "false"및 WordDelimiterFilterFactory
SOLR 사양 버전 : 3.1.0
SOLR 구현 버전 : 3.1.0 1085815 - grantingersoll - 2011-03-26 18시 0분 7초
루씬 사양 버전 : 3.1.0
Lucene 구현 버전 : 3.1.0 1085809 - 2011-03-26 18:06:58
현재 시간 : Tue Apr 26 08:01:09 CEST 2011
서버 시작 시간 : Tue Apr 26 07:59:05 CEST 2011
다음은 텍스트gen 유형에 대한 정의입니다.
<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>
색인에 이름 필드에이 유형이 사용됩니다. 당신은 내가 디버그 쿼리 다음 = "거짓"하지만 내가 갖는 쿼리 SONY VAIO 4기가바이트에 대한 autoGeneratePhraseQueries를 사용하고 볼 수 있듯이 :
<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을 피할 수있는 방법 어떤 생각을 가지고 있습니까?