2012-09-06 3 views
1

SOLR 3.6.1을 사용하여, 나는 나의의 schema.xml에서이 분야가 있습니다SOLR 검색 부분 문자열을 일치 반환

<field name="names" type="text_general" indexed="true" stored="false" multiValued="true"/> 
<dynamicField name="names_*" type="text_general" indexed="true" stored="true"/> 

의 schema.xml의 내용은 해당 "text_general"상태를 수행해야합니다

StandardTokenizer
    • 토큰 화는 (현재 비어) 대소 문자를 구별하지 "stopwords.txt"에서 단어
    • 아래의 경우 문자열을 중지 제거합니다.

      <!-- doc 1 --> 
      <str name="names_data">Name ABC Dev Loc</str> 
      
      <!-- doc 2 --> 
      <str name="names_data">Name ABC Dev Location</str> 
      

      I를 : 쿼리시에

    • 만, 그것은 또한 내가 두 문서는 필드에이 데이터를 SOLR에 색인을

    (이 시간도 비어) 동의어를 적용 다음 쿼리를 실행하십시오.

    id:(doc1 OR doc2) AND names:Dev+Location) 
    

    두 문서가 모두 반환됩니다. Solr의 StandardTokenizer 작동 방식에 대한 이해를 바탕으로 doc2 만 반환 될 것으로 예상 했었습니다.

    "Dev + Location"이 "Dev Loc"및 "Dev Location"과 일치하는 이유는 무엇입니까?

  • 답변

    2

    유형 text_generalLocation 변종으로 Loc을 처리하는 stemmer을 사용하도록 구성되었을 수 있습니다.

    당신은 형태소 분석기를 사용 하지에 유형을 구성하거나이 왜 수 있습니다 names:"Dev Location"

    0

    사용하여 전체 문자열 검색을 시도 할 수 있습니다.

    Location 용어는 <defaultSearchField>가의 schema.xml에 설정되어 무엇에 대해 Location를 검색 필드 이름 규정이 없기 때문에 names:Dev

    그래서 당신은 시도 할 수있는 곳 만 검색하는 쿼리의이 부분 names:"Dev Location"이나 접두사를 인용하려면 names:Dev AND names:Location