Lucene.net 2.9를 사용하고 있으며 내 쿼리가 예상 결과를 반환하지 않는 이유를 이해하려고합니다.Lucene.Net "-"또는 와일드 카드를 사용할 때 예상 검색 결과를 반환하지 않음
다음 함수를 사용하여 인덱싱 된 문서에 필드를 추가합니다. 문서에 필드를 추가 할 때 내가 Lucene.Net.Documents.Field.Index.NOT_ANALYZED
을 사용하고 있기 때문에 내가 이해하는 바로는
//add fields to the document
public void AddFacet(Lucene.Net.Documents.Document doc, String facetName, String facetValue)
{
doc.Add(new Lucene.Net.Documents.Field(facetName, facetValue, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.NOT_ANALYZED));
}
//snippet of analyzer being used
Lucene.Net.Analysis.Analyzer analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29);
//snippet of a simple demo
Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
AddFacet(doc, "FACET", "INDEX-VALUE-TEST");
는 facetValue
용어로 토큰 화되지 않습니다.
원래 facetValue
이 "INDEX-VALUE-TEST"로 저장되었다고 생각합니다. 토큰화될 경우 분석기가 -
을 중지 단어로 해석하기 때문에 "INDEX", "VALUE"및 "TEST"의 여러 용어로 저장됩니다.
"INDEX"에 대한 검색을 수행하면 검색어가 +(xml:index)
인 것처럼 보입니다. 검색어는 해당 용어에 "INDEX"가 포함 된 모든 문서를 반환합니다. 이것은 예상된다.
나는 다음과 같은 경우를 이해하지 않는다 : 나는 "INDEX-VAL"에 대한 검색을 수행 할 경우
, 내 쿼리 결과가 반환
+(xml:index-val)
처럼 보일 것이다. 와일드 카드가 없기 때문에 결과가 반환되지 않는 이유를 알 수 있습니다."INDE *"에 대한 검색을 수행하면 내 쿼리는
+(xml:inde*)
처럼 표시되며 다시 결과가 반환되지 않습니다. 왜 이것이 문서를 반환하지 않는 지 모르겠습니다. 나는 그들의 분야에서 "INDE"를 포함하는 모든 문서를 되 찾을 것을 기대합니다."INDEX-VALUE-TEST"를 검색하면 검색어는
+(xml:index-value-test)
입니다. 다시 말하지만 결과는 없습니다. 나는 1 개의 문서를 되 찾을 것으로 기대한다.
"INDEX-VALUE-TEST"라는 용어를 저장 한 경우 결과 # 2 및 # 3이 반환되지 않는 이유는 무엇입니까? 왜 나머지 단어와 일치시키기 위해 # 1은 와일드 카드가 필요할 수 있기 때문에 # 1이 아닌지 알 수 있습니다. 그렇다면 왜 와일드 카드가없는 "INDEX"를 검색하고 모든 문서를 얻을 수 있습니까? 나는 누군가가 나를 내가 부족 무엇을 이해하는 데 도움 수 있다면 내가 this source to understand the fields I'm adding to the document.
을 사용하고
this source to understand the indexing files.을 사용하고
, 그것은 크게 감상 할 수있다.
OP는 공백으로 시작하는 하이픈을 부울 연산자로 처리하는 StandardAnalyzer를 사용합니다. 여기서는 그렇지 않습니다. 내 대답을 보라. – groverboy
예. 죄송합니다. 공백은 부울 연산에 필요합니다. 대소 문자가 여전히 문제가됩니다. –