본문 바로가기
개발/ALGOLIA

알고리아 Managing Results(3-26)

by dev_caleb 2022. 3. 5.
728x90

Filter By String

https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-string/

 

Filter by string | Algolia

Filter by string.

www.algolia.com

 

Algolia lets you filter on various types of attributes, including strings. For example, imagine you have an ecommerce website that sells smartphones, and you want to filter search results on a specific brand. With filters, you could allow users to refine results by selecting one or several brands or even exclude a specific brand.

Algolia를 사용하면 문자열을 포함한 다양한 유형의 속성을 필터링할 수 있습니다. 예를 들어 스마트폰을 판매하는 전자 상거래 웹 사이트가 있고 특정 브랜드에 대한 검색 결과를 필터링하려고 한다고 가정해 보십시오. 필터를 사용하면 사용자가 하나 이상의 브랜드를 선택하거나 특정 브랜드를 제외하여 결과를 구체화할 수 있습니다.

 

 

Dataset Example#

Let’s say we have an index called products that looks like this:

[
  {
    "name": "iPhone XR Black 64GB",
    "description": "iPhone XR features the most advanced LCD in a smartphone—a 6.1-inch Liquid Retina display with industry-leading color accuracy and an innovative backlight design that allows the screen to stretch into the corners.",
    "brand": "Apple",
    "price": 749.99
  },
  {
    "name": "iPhone XS Gold 64GB",
    "description": "The iPhone XS smartphone features a 5.8-inch Super Retina display with custom-built OLED panels for an HDR display that provides the industry's best color accuracy, true blacks, and remarkable brightness.",
    "brand": "Apple",
    "price": 999.99
  },
  {
    "name": "Galaxy Note9 Ocean Blue 128GB",
    "description": "The new super powerful Note. Galaxy Note9 has the largest amount of storage offered in a Samsung smartphone.",
    "brand": "Samsung",
    "price": 900.00
  },
  {
    "name": "G7 ThinQ™ Platinum Gray 64GB",
    "description": "LG'S greatest smartphpne yet. Advanced AI multimedia phone!",
    "brand": "LG",
    "price": 600.00
  },
  {
    "name": "Moto E5 Play 16GB",
    "description": "Keep your smartphone protected with a water-repellent coating. Make room for more photos, songs, and videos with expandable storage.",
    "brand": "Motorola",
    "price": 150.00
  },
  ...
]

With the above data structure, we can filter on the brand attribute in a variety of ways:

  • We could only show “Motorola” smartphones
  • We could only show “LG” or “Samsung” smartphones
  • We could show everything but “Apple” smartphones

However, before we can do that, we first need to set brand as attributes for faceting.

하지만 그러기 전에 브랜드를 면의 속성으로 먼저 설정해야 합니다.

 

 

Configuring attributesForFaceting

Using the API

First, you need to set brand as attributesForFaceting. This happens at indexing time.

Note that if you only need the filtering feature, you can take advantage of the filterOnlymodifier, which reduces the index size and improves the speed of the search.

먼저 브랜드를 AttributesForFaceting으로 설정해야 합니다. 이는 인덱싱할 때 발생합니다.
필터링 기능만 필요한 경우 인덱스 크기를 줄이고 검색 속도를 향상시키는 filterOnlymodifier를 사용할 수 있습니다.

 

index.setSettings({
  attributesForFaceting: [
    'brand' // or 'filterOnly(brand)' for filtering purposes only
  ]
}).then(() => {
  // done
});

 

 

Using the dashboard

You can set your attribute for faceting in your Algolia dashboard.

  1. Select the Search product icon on your dashboard and then select your index.
  2. Click the Configuration tab.
  3. In the Facets subsection of Filtering and Faceting, click the “Add an attribute” button and select the brand attribute from the dropdown.
  4. Don’t forget to save your changes!

 

1. 대시보드에서 제품 검색 아이콘을 선택한 다음 인덱스를 선택합니다.
2. 구성 탭을 클릭합니다.
3. 필터링 및 패싱의 패싯 하위 섹션에서 "특성 추가" 단추를 누른 후 드롭다운에서 브랜드 속성을 선택합니다.
4. 변경 내용을 저장하는 것을 잊지 마십시오!

 

Applying a string filter

Using the API

Now, you can apply your filters. Note that you can only filter results at query time, not at indexing time. For this, you need to use the filters parameter in your search code.

이제 필터를 적용하면 됩니다. 인덱싱 시간이 아닌 쿼리 시간에만 결과를 필터링할 수 있습니다. 이를 위해 검색 코드에서 필터 매개 변수를 사용해야 합니다.

 

// Only "Motorola" smartphones
index.search('smartphone', {
  filters: 'brand:Motorola'
}).then(({ hits }) => {
  console.log(hits);
});

// Only "LG" or "Samsung" smartphones
index.search('smartphone', {
  filters: 'brand:LG OR brand:Samsung'
}).then(({ hits }) => {
  console.log(hits);
});

// Everything but "Apple" smartphones
index.search('smartphone', {
  filters: 'NOT brand:Apple'
}).then(({ hits }) => {
  console.log(hits);
});

Using the dashboard

Regarding filters, you can’t set them directly in the dashboard since you can only filter at query time. Yet, you can test for specific filters in the dashboard before using them in your search code.

필터의 경우, 쿼리 시에만 필터링할 수 있으므로 대시보드에서 직접 설정할 수 없습니다. 그러나 검색 코드에 사용하기 전에 대시보드에서 특정 필터를 테스트할 수 있습니다.

 

  1. Select the Search product icon on your dashboard and then select your index. This should take you automatically to the Browse section.
  2. Click the “Add Query Parameter” button, which is just below the search bar.
  3. Go to the Custom tab.
  4. Add your filter as JSON: { "filters": "brand:Motorola" } or { "filters": "brand:LG OR brand:Samsung" } or { "filters": "NOT brand:Apple" }.
  5. Click “Apply”.

Note that you can alternatively use facet filters. Click the “Add Query Parameter” button, go to the Filters tab and enter your targeted facet filter(s).

대신 패싯 필터를 사용할 수 있습니다. "쿼리 매개변수 추가" 단추를 누른 후 [필터] 탭으로 이동한 후 대상 패싯 필터를 입력합니다.

 

 

728x90

'개발 > ALGOLIA' 카테고리의 다른 글

알고리아 Managing Results(3-28)  (0) 2022.03.05
알고리아 Managing Results(3-27)  (0) 2022.03.05
알고리아 Managing Results(3-25)  (0) 2022.03.05
알고리아 Managing Results(3-24)  (0) 2022.03.04
알고리아 Managing Results(3-23)  (0) 2022.03.04