2014-07-01 5 views
0

Lucene 색인 (.NET)을 만들 때 NOT_ANALYZED로 식별자 필드를 추가합니다. 즉, "있는 그대로"즉 언어가 단순히 "EN"또는 "JP"로 저장됩니다. 이해한다면 자유 텍스트가 아닌 키를 저장하는 올바른 방법입니다. NOT_ANALYZED 필드에Lucene NOT_ANALYZED 리터럴 필드 검색이 0 결과를 반환하는 이유는 무엇입니까?

doc.Add(new NumericField("id", Field.Store.YES, true).SetIntValue(id)); 
doc.Add(new Field("language", language, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO)); 
doc.Add(new Field("headline", headline, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES)); 

분석 필드 반환 결과에 대한 검색, 즉

headline:oversight 

결과를 반환하지만, 간단한 쿼리는하지 않습니다 :

language:EN 

또는

id:120 
id:[120 TO 120] 

(나는 id라고 가정하고, sto NumericField는 빨간색으로 본질적으로 NOT_ANALYZED로 저장됩니다.

Luke을 통해 색인에서이 값을 볼 수 있습니다.이 값은 저장되어 있습니다. 간단한 리터럴 필드에 대해 쿼리가 작동하지 않는 이유는 무엇입니까?

감사

라이언

답변

0

NOT_ANALYZED 용어 사전 그래서 이것에 대한 검색 결과를 얻을 수 없습니다, 해당 필드에 대한 참조를 포함되지 않습니다. 필드를 색인하려는 경우 KeywordAnalyzer을 사용하여 텍스트를 주어진대로 유지하지만 색인을 생성하고 용어 사전 내에서 볼 수있게하는 것이 좋습니다. 또한 부수적으로, Field.Index enum은 더 이상 사용되지 않으므로 나는 그 외로도 이동할 것을 제안합니다.