2012-03-05 32 views
5

trong file schema Solr của tôi tôi có một lĩnh vực tìm kiếm mặc định trong đó sử dụng EdgeNGramFilterFactorytìm kiếm trong Solr với EdgeNGramFilterFactory và chiều dài tối thiểu của các truy vấn tìm kiếm

<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" side="front" /> 

cho rằng truy vấn tìm kiếm của tôi là

tes 

nên Tôi nhận được kết quả như vậy:

tess 
test 
tesla 
... 

nếu tôi tìm kiếm

test 

tôi nhận được kết quả như

test 
tess 
tesla 
... 

ok của nó bởi vì tôi sử dụng EdgeNGramFilterFactory với minGramSize = 3 nhưng Tôi muốn những điều sau:

Khi tôi tìm kiếm một chuỗi trong đó chiều dài là hơn hơn 3 ký tự (ví dụ kiểm tra) Tôi muốn rằng solr bỏ qua tất cả các điều khoản trong đó bao gồm 3 ký tự (EdgeNGramFilterFactory). Khi tôi tìm kiếm "test", tôi không muốn nhận được kết quả như "tess" hoặc "tesla". Tôi sẽ không nhận được Kết quả bắt đầu bằng thử nghiệm (4 ký tự) như

test 
test for 
test-drive 
... 

Có thể định cấu hình trong solr không?

Trả lời

5

Bạn chỉ có thể định cấu hình bộ lọc EdgeNGram trong bộ phân tích chỉ mục của trường; đối với bộ phân tích truy vấn, vẫn thực hiện tokenization thông thường với bất kỳ EdgeNGram nào. Vì vậy, khi bạn tìm kiếm "kiểm tra", chỉ các kết quả có tiền tố "kiểm tra" chính xác mới được trả lại.

cấu hình ví dụ: (không xác định EdgeNGram cho bộ phân tích truy vấn)

<fieldType name=...> 
    <analyzer type="index"> 
     ... 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="15" side="front" /> 
    </analyzer> 
    <analyzer type="query"> 
     ... 
     <!-- <filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="15" side="front" /> --> 
    </analyzer> 
</fieldType> 
Các vấn đề liên quan