SOLR 데이터베이스를 사용하는 PHP 애플리케이션이 있습니다. 문제는 내가/용어 요청을하고있는 중이 야 때 나타났다 (terms doc)/용어로 검색하는 Solr
그래서 관심 문서의 부분은 우리가
poi: "Bistriţa",
...
text: [
"ddt",
"Numeric",
"/14/Gagaga 2/11/Economics/17/datenow",
"/20/Daniel_same/11/Economics/17/datenow",
"0/Gagaga 2",
"1/Gagaga 2/Economics",
"2/Gagaga 2/Economics/datenow",
"0/Daniel_same",
"1/Daniel_same/Economics",
"2/Daniel_same/Economics/datenow",
"ppla",
"seat of a first-order administrative division",
"/19/Daniel_same/1071/Plurinational State of Bolivia/2269/Cuba/2272/Bistriţa",
"0/Daniel_same",
"1/Daniel_same/Plurinational State of Bolivia",
"2/Daniel_same/Plurinational State of Bolivia/Cuba",
"3/Daniel_same/Plurinational State of Bolivia/Cuba/Bistriţa",
"0/Undefined_activity",
"Year",
"0/1999",
"0/1999",
"Measured",
"",
"utf8"
],
하고 요청 응답은
http://localhost:8080/solr/terms
?wt=json
&indent=true
&terms.sort=count
&terms.mincount=1
&terms.limit=10
&terms.regex.flag=case_insensitive
&terms.regex=.*bi.*
&terms.fl=text
입니다
{
responseHeader: {
status: 0,
QTime: 4
},
terms: {
text: [
"bistriå",
16
]
}
}
결과에 따른 문제점은 결과 텍스트가 잘립니다. 나는 도시의 UTF-8 인코딩 인 "BistriÅ £ a"를 기대했다. Bistrița. 그러나 결과는 특수 문자에서 잘린 것처럼 보입니다.
이상한 것은
내가 필드 이름 대신 "텍스트"의 "POI"을 요청을 할 경우, 내가 올바른 응답http://localhost:8080/solr/terms
?wt=json
&indent=true
&terms.sort=count
&terms.mincount=1
&terms.limit=10
&terms.regex.flag=case_insensitive
&terms.regex=.*bi.*
&terms.fl=poi
{
responseHeader: {
status: 0,
QTime: 4
},
terms: {
text: [
"Bistriţa",
16
]
}
}
그래서 단어가 잘리지 않습니다를 얻을 수있다.
두 필드의 가장 큰 차이는 유형입니다. 포이은 문자열 유형 및 텍스트은 텍스트 _ 일반 숫자 유형이 있습니다. text_general 유형은 다음과 같은 스키마에 정의되어 있습니다.
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
질문하는 경우 자세한 내용을 제공 할 수 있습니다. 내가 지금 무엇을 추가 할 수 있는지 모르거나 질문을 너무 많이 부풀려서는 안된다.