는 내가 달성하고자하는 것입니다. 어떻게해야합니까? SOLR 대소 문자를 구분 필드 검색 문제
내가 여기test_field
<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
<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" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
</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" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="select">
<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" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
에 할당 된 내의 schema.xml이 textgen
유형이 것은 내 쿼리를받을 원하는 결과입니다. 이 필터 LowerCaseFilterFactory
http://localhost:8983/solr/test-data/select?q=test_field:*test*&wt=json&indent=true
및 빈 결과에도 불구하고
{
"responseHeader":{
"status":0,
"QTime":2,
"params":{
"q":"test_field:*",
"indent":"true",
"wt":"json"}},
"response":{"numFound":5,"start":0,"docs":[
{
"id":"change.me",
"test_field":["test"],
"_version_":1546932094148542464},
{
"id":"change.me1",
"test_field":["tesT"],
"_version_":0203020288},
{
"id":"change.me2",
"test_field":["TesT"],
"_version_":3122255872},
{
"id":"change.me3",
"test_field":["TEsT"],
"_version_":7768496128},
{
"id":"change.me4",
"test_field":["TEST"],
"_version_":1546932111283322880}]
}}
나는 그것이 대소 문자를 구분하기 때문에 어떤 결과를 제공하지 않습니다이 쿼리를 사용
. (내가 뭘 잘못하고있는거야?){
"responseHeader":{
"status":0,
"QTime":2,
"params":{
"q":"test_field:*test*",
"indent":"true",
"wt":"json"}},
"response":{"numFound":1,"start":0,"docs":[
{
"id":"change.me",
"test_field":["test"],
"_version_":1546932094148542464}]
}}
필터를 추가 한 후 문서의 색인을 다시 만들어야합니다. 따라서 문서의 색인을 다시 작성한 후 쿼리를 확인하십시오. –
새로운 스키마를 만들었고 효과가있었습니다. 이전의 솔라 스키마에서 뭔가가 엉망이라고 생각합니다. –