2013-05-10 5 views
0

검색 키로 시작하는 문장과 일치하는 데이터를 검색하고 있습니다.lucene 검색 문장의 첫 단어 만 검색하십시오.

예 :

search key "what" 

결과 : 이제 점점 내가 그것을 나를주고있다 well..But로 EdgeNGram을 사용하고

Is that **what** you want 
some text before **what** 

etc. 

이다하고 어떻게

**what** is your name 
**what** are you doing 
**what** is that 

etc. 

원하는 두 번째 것. 도움이 감사드립니다 ....

답변

1

나는 당신이 WhitespaceTokenizer를 사용하고 있다고 생각합니다. 왼쪽 끝에서 EdgeNGram과 함께 KeywordTokenizer를 사용해보세요.

자동 제안을 구현하려는 경우 Suggester 구성 요소를 살펴보십시오.

+0

하이 https://github.com/billdueber/solr_stupid_tricks/blob/SST4/solr/conf/schema.xml ("text_l"에 대한 검색), 나는 SUGGESTER 관련 링크를 시도했다. 사용자가 입력 한 단어 만 표시됩니다. EX의 경우 : "귀하의 이름은 무엇입니까?"라는 값으로 검색 필드가 표시되고 검색에 w OR가 사용되면 "무엇"이 주어지며 누군가 검색하면 '나만'이됩니다. 그래서 여기서 내가 w를 검색 할 때 "yo"에 전체 문자열과 아무것도 넣지 않기를 원합니다 – sandy

+0

공백 또는 키워드 토크 나이저가 차이를 만들지 않았습니다! – sandy

+0

예 Suggester는 필드 값 자체가 아닌 토큰에서 작동합니다. 나는 왜 키워드 tokenizer가 작동하지 않는지, 전체 값을 보존 할 것이라고 확신하지 못한다. 그리고 ngram은 정면에서 바라본 것으로 보인다. 최악의 경우, facet.prefix 샷을 줄 수 있습니다. http://wiki.apache.org/solr/SimpleFacetParameters#facet.prefix – rounak

0

난 당신이 다음과 같은 트릭을 사용할 수 있다고 생각 : 당신의 필드 정의에 다음 줄을 추가합니다 : 이것은 당신의 인덱스 및 쿼리 모두에 "AAAA"토큰을 추가합니다

<charFilter class="solr.PatternReplaceCharFilterFactory" 
    pattern="^(.*)$" replacement="AAAA $1" /> 

. 이렇게하면 인덱스 된 문자열의 시작 부분을 일치시킬 수 있습니다. 여기

상세 정보 :

관련 문제