Tôi đang cố gắng tìm kiếm các kết quả bắt đầu một phần trên một danh sách lớn các họ. Vì vậy, Wein * nên tìm Weinberg, Weinkamm, vvLàm thế nào để thực hiện các trận đấu bắt đầu một phần trong Solr?
tôi có thể làm điều này bằng cách tạo ra một lĩnh vực đặc biệt, và thêm
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" preserveOriginal="1"/>
để đặc tả kiểu của nó trong schema.xml. Khi tôi thêm dòng trên chỉ để phân tích chỉ mục và để trống nó cho trình phân tích truy vấn, tôi có thể tìm kiếm bằng cách chỉ tìm kiếm special_field: Wein và nhận kết quả mong đợi.
Bây giờ tôi thấy rằng solr cũng có * -syntax. Mối liên hệ giữa EdgeNGramFilterFactory và * -syntax là gì?
Tôi có làm đúng hay có cách nào tốt hơn, thường xuyên hơn không?
Cảm ơn!
Cảm ơn. Tôi không mong đợi nhiều thuật ngữ truy vấn, vì vậy tôi đã đi với cú pháp ký tự đại diện và khá hài lòng với nó. – CruftyCraft
Tôi đề cập đến số lượng cụm từ chỉ mục, không phải là cụm từ truy vấn. Solr/Lucene thực hiện tìm kiếm tuyến tính trên tất cả các thuật ngữ được lập chỉ mục để chọn một tập con các thuật ngữ có cùng tiền tố. Khi tập hợp con được chọn, truy vấn được mở rộng để bao gồm các cụm từ đó. Vì vậy, nút cổ chai là tìm kiếm tuyến tính. Sau đó, tôi vẫn đề nghị EdgeNGramFilter, trừ khi bạn nói rằng bạn có vài thuật ngữ trong chỉ mục của bạn. – Rodes
Tôi hiểu. Tôi có thể thực hiện các thay đổi tương tự theo hướng này khi chúng tôi đạt đến giới hạn hiệu suất. Cảm ơn. – CruftyCraft