전자 상거래 웹 사이트에 대한 제품 검색 엔진을 구축 중입니다.전자 상거래 제품 검색 : 공백 여부
문서가 이기종 소스에서 제공되므로 지금은 수정할 수 없습니다. 이와 같은
GO-PRO BATTERY 1000
GO-PRO BATTERY 2000
그리고 마지막으로 다른 사람 :
GOPRO CAMERA 32
GOPRO CAMERA 35
일부이 같은 다른 사람 : 설명 필드
GO PRO CASE SLIM BLUE
GO PRO CASE SLIM RED
GO PRO CASE SLIM GREEN
내 필드 유형
나는이 같은 일부 문서의 설명이 'text_it':
<fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball" />
<filter class="solr.ItalianLightStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball" />
<filter class="solr.ItalianLightStemFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>x
</analyzer>
</fieldType>
분명히 GO PRO과 같은 쿼리를 제출할 때 위에 나열된 세 그룹 각각의 결과가 표시됩니다.
내가 대신 검색 할 때 GOPRO 그냥 처음 두 그룹의 검색 결과가 있습니다. 무엇
GOPRO => GOPRO GOPRO => GOPRO, 이동 프로 GO의 => 가고 PRO, 프로
: 그 이유는 인덱스 토큰이 있다는 분석 양식을 알고 gopro (공백없이) GO PRO 제품 (공백 포함)과 일치하는 쿼리를 제안 했습니까?
UPDATE
내가, 내 쿼리 분석기이 추가 시도 LowerCaseFilter 후 :
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" side="front" />
... 그리고 내 사용 사례에 대해 작동합니다 쿼리 "GOPRO는"g를 생성 , go, gop, gopr, gopro 토큰과 여기 있습니다. 좋아,하지만 이제는 다른 모든 쿼리 결과가 망가졌습니다! "es"토큰이 생성되어 "필수"쿼리의 첫 번째 결과는 "dvd player es-124"입니다.
무엇 "대상 포진"을 만들기에 대해? "go pro camera"=> "gopro", "procamera"+ 원본? –
같은 문제; 매우 특정한 단어 목록 (브랜드 이름 - 예를 들어 "슬로우 모션 카메라"를 묶을 일반 토큰 화 프로그램을 원하지 않을 것입니다)에 대해서만 그렇게하기를 원할 것입니다. 그래서 여러분은 수작업으로 큐리스트로 가야합니다 동의어들.귀하의 예제에서 동의어 목록에 두 줄이 필요하다고 생각합니다. 한 줄은 고 프로 (gopro) 용이고, 한 줄은 고 프로 (gopro) 카메라 용입니다. 검색 용 카메라를 식별해야합니다. – Yann
무엇을 했습니까? 도움이 되었다면 대답을 받아주세요 :) – Yann