2015-05-04 20 views
11

Tôi tự hỏi liệu có thể có được mười từ thường xuyên nhất trong một trường Elasticsearch trên toàn bộ chỉ mục hoặc bí danh hay không.Tần số và quan hệ từ Elasticsearch

Dưới đây là những gì tôi đang cố gắng để làm:

Tôi đang lập chỉ mục tài liệu văn bản được chiết xuất từ ​​các loại tài liệu khác nhau (Word, Powerpoint, PDF, vv) này được phân tích và lưu trữ trong một lĩnh vực được gọi doc_content. Tôi muốn biết nếu có một cách để tìm các từ thường xuyên nhất (s) trong một chỉ mục cụ thể được lưu trữ trong lĩnh vực doc_content.

Để làm cho rõ ràng hơn, hãy giả sử tôi lập chỉ mục hóa đơn từ Amazon và eBay chẳng hạn. Bây giờ giả sử tôi có 100 hóa đơn từ amazon và 20 hóa đơn từ ebay. Cho phép cũng giả định rằng từ "amazon" xảy ra hai lần trong mỗi hóa đơn amazon và từ "ebay" xảy ra 3 lần trong mỗi hóa đơn ebay.

Bây giờ, có cách để tổng hợp sắp xếp cho tôi biết từ "amazon" xuất hiện trong chỉ mục của tôi 200 lần (100 hoá đơn x 2 lần xuất hiện/hóa đơn) và từ "ebay" xuất hiện 60 lần (20 hoá đơn x 3 lần xuất hiện/hóa đơn).

Câu hỏi khác của tôi là nếu câu hỏi trước là có thể, thì có cách nào để xác định từ thường gặp nhất sau một từ nhất định không?

Ví dụ: giả sử tôi có 100 tài liệu. 60 trong số các tài liệu này chứa thuật ngữ "Old Cat" và 40 chứa thuật ngữ "Old Dog" và vì lợi ích của đối số cho phép giả định rằng những từ này chỉ xuất hiện một lần trong mỗi tài liệu.

Bây giờ, nếu chúng ta có thể có được tần số của từ "cũ" mà trong trường hợp của chúng tôi nên 100. Chúng ta có thể sau đó xác định một mối quan hệ với các từ mà đến ngay sau khi nó có một cái gì đó như thế này:

   __________ Cat (60) 
       | 
Old (100)-----| 
       |__________ Dog (40) 

Trả lời

3

Để nhận tần suất cụm từ, bạn có thể sử dụng term vectors. Tuy nhiên, trước tiên bạn phải lưu trữ chúng và thứ hai, bạn có thể lấy chúng chỉ cho một tài liệu nhất định.

Theo như tôi biết, không thể tổng hợp qua vectơ cụm từ.

Có thể bạn có thể đạt được một số điều bạn muốn bằng cách sử dụng các trường theo kịch bản. Nhưng sau đó một lần nữa, Groovy hiện đang bị hủy hoại vì các vấn đề bảo mật và tổng hợp trên các lĩnh vực kịch bản có khả năng khá chậm.

Bằng cách này, câu hỏi tương tự đã được hỏi trước:

+0

Vâng, bạn có thể xây dựng thêm về sử dụng các lĩnh vực kịch bản để tần số từ tổng hợp. Bảo mật không phải là vấn đề vì cụm ES của tôi không được công khai. –

+0

Bạn có thể sử dụng các trường theo thời gian chỉ mục để tính các tần số từ. Tôi không nghĩ rằng đó là một lựa chọn tốt nhưng nó có thể hoạt động nếu bạn chỉ quan tâm đến một tập hợp nhỏ các từ khóa được xác định trước. –

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