2012-11-30 3 views
1

주어진 접두사가있는 이름을 가진 모든 필드를 검색하는 쿼리를 만들 수 있습니까?이름에 주어진 접두사가있는 필드를 사용하여 검색 할 수 있습니까?

색인이 필요한 개체와 함께 제공되는 정보를 색인해야하기 때문에 필요합니다. 범주. 카테고리는 서로 다른 레벨을 가질 수 있습니다. 나는 다른 카테고리 수준에 다른 향상을주고 싶다.

색인을 생성하는 동안 필드를 두 번 이상 추가 할 수 있습니다. catName 필드를 여러 번 추가하고 다른 부스트로 한 번 필드를 검색 할 수 있습니까?

필드 이름 당
int level = 1; 

for (Category cat : sortedCategories) { 
    float boost = CATEGORY_BOOST/level; 
    String catName = CATEGORY_NAME + String.valueOf(level); 
    TextField categoryName = new TextField(catName, cat.getName(), 
              Field.Store.NO); 
    categoryName.setBoost(boost); 
    doc.add(categoryName); 
당신은 변경되지 않은 색인을 떠나, 그냥 여러 절을 사용하는 BooleanQuery를 만들 수 있습니다

답변

1

, 하나, 그리고 Occurs.SHOULD.

또는 접두사 전용 인덱스를 만들 수 있습니다. 필드 이름이 'Pre1'및 'Pre2'인 경우 'Pre1'에서 새 색인 생성 필드 'Pre'를 추가하고 집계 색인을 추가 할 수 있습니다. 및 'Pre2'.

+0

하지만 Pre1과 Pre2가있을 수 있지만 Pre6도있을 수 있습니다. 따라서 BooleanQuery를 사용하면 우아하고 유연하지 않습니다. 그러나 두 번째 옵션을 구현하는 방법을 잘 모르겠습니다. 나는 같은 이름을 가진 여러 필드를 만들 것이라고 생각하지만 다른 부스트를 사용합니다. 작동해야합니까? : http://stackoverflow.com/questions/401754/field-having-multiple-distinct-values ​​ – Damian

+0

'Pre1 및 Pre2뿐만 아니라 Pre6'- 문제가 아니며 BooleanQuery에서 여러 개의 절을 가질 수 있습니다. –

관련 문제