2013-07-18 28 views
10

Tôi có ba chỉ số loại thực phẩm "Ý", "Tây Ban Nha", "Mỹ". Khi người dùng tìm kiếm "Pho mát", các tài liệu từ "Ý" xuất hiện ở trên cùng. Có thể "tăng" kết quả nếu tôi muốn ưu tiên nói "tiếng Tây Ban Nha" không? (Tôi vẫn nên nhận kết quả cho tiếng Ý, nhưng dựa trên một số giá trị tăng số cho loại chỉ mục "tiếng Tây Ban Nha", thứ tự của các tài liệu được trả về trong kết quả ưu tiên cho chỉ mục "tiếng Tây Ban Nha". hoặc ES truy vấn? Nếu vậy, làm thế nào?Làm cách nào để tăng tìm kiếm dựa trên loại chỉ mục trong elasticsearch hoặc lucene?

+1

lẽ bạn đang tìm kiếm chỉ số-tăng? https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-index-boost.html – Sid

Trả lời

5

Thêm một truy vấn dài với một sự thúc đẩy cho một trong hai lĩnh vực _type hoặc _index (hoặc cả hai).

+0

Hiện đang sử dụng truy vấn chuỗi, có thể sử dụng truy vấn đó bằng truy vấn hạn không? – Rolando

+0

kết hợp chúng với bool –

+0

Không tìm thấy cách nào để tăng _type trong tài liệu chính thức, bạn có thể cho tôi mẫu hoặc liên kết không? http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html – navins

0

đối với truy vấn thời gian thúc đẩy, truy vấn (ví dụ. query string) thường có một thuộc tính boost mà bạn có thể đặt. Ngoài ra, bạn có thể bao gồm các truy vấn trong một số custom boost factor. Tôi có thể sẽ thích truy vấn trước đây, thường là:

4

Sử dụng script_score như một phần của truy vấn số điểm chức năng:

function_score: { 
    script_score: { 
    script: "doc['_type'].value == '<your _type>' ? _score * <boost_factor> : _score" 
    } 
} 
+0

Tôi đã sử dụng "" tập lệnh ":" doc ['_ type']. value == '35 '? _score * 2: _score "', hóa ra là «Truy vấn thất bại [Không thể thực hiện truy vấn chính]]; lồng nhau: GroovyScriptExecutionException [MissingPropertyException [Không có thuộc tính như vậy: _type cho lớp: Script4]] ' – navins

3

Nếu truy vấn nhiều chỉ số cùng một lúc, nó có thể để xác định chỉ số tăng ở cấp cao nhất của đối tượng thông qua tìm kiếm API:

curl -XGET localhost:9200/italian,spanish,american/_search -d ' 
{ 
    "query":{"term":{"food_type":"cheese"}}, 
    "indices_boost" : { 
     "ilalian" : 1.4, 
     "spanish" : 1.3, 
     "american" : 1.1 
    } 
}' 

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-index-boost.html#search-request-index-boost

+0

Alexey, điều này yêu cầu ES 1.7? –

+0

@Alexey Tigarev Làm thế nào tôi có thể đạt được điều này bằng cách sử dụng máy khách java? – Thiago

+0

có hoặc không có điều này dường như không thay đổi điểm kết quả với tôi – Jeffrey04

Các vấn đề liên quan