מבוא ל- Spring Data Solr

1. סקירה כללית

במאמר זה, נחקור את היסודות של Spring Data Solr באופן פרקטי.

Apache Solr הוא קוד פתוח שמוכן לפרוס מנוע חיפוש ארגוני בטקסט מלא. תוכל למצוא מידע נוסף על התכונות של Solr באתר הרשמי.

אנו נראה כיצד לבצע תצורה פשוטה של ​​Solr וכמובן כיצד לתקשר עם השרת.

ראשית, עלינו להפעיל שרת Solr וליצור ליבה לאחסון נתונים (אשר, כברירת מחדל, Solr תיצור במצב חסר סכמה).

2. נתוני אביב

בדיוק כמו כל פרויקט אחר של Spring Data, ל- Spring Data Solr יש מטרה ברורה להסיר קודי צלחת, מה שבהחלט ננצל.

2.1. תלות של Maven

נתחיל בהוספת תלות האביב של Solr ל- Spring שלנו pom.xml:

 org.springframework.data spring-data-solr 2.0.5.RELEASE 

תוכל למצוא את התלות האחרונות כאן.

2.2. הגדרת המסמך

בואו נגדיר מסמך שנקרא מוצר:

@SolrDocument (solrCoreName = "product") מחלקה ציבורית מוצר {@ Id @Indexed (name = "id", type = "string") מזהה מחרוזת פרטי; @Indexed (name = "name", type = "string") שם מחרוזת פרטי; }

@SolrDocument ביאור מציין כי מוצר class הוא מסמך Solr ובאינדקס לליבה בשם מוצר. שדות עם הערות עם @Indexed באינדקס ב- Solr וניתן יהיה לחפש אותם.

2.3. הגדרת ממשק מאגר

בשלב הבא עלינו ליצור ממשק מאגר על ידי הרחבת מאגר שמספק Spring Data Solr. אנו מטפלים בזה באופן פרמטרי מוצר ו חוּט כמזהה הישות שלנו:

ממשק ציבורי ProductRepository מרחיב SolrCrudRepository {רשימה ציבורית findByName (שם מחרוזת); @Query ("id: *? 0 * או שם: *? 0 *") דף ציבורי findByCustomQuery (מחרוזת searchTerm, Pageable pageable); @Query (name = "Product.findByNamedQuery") דף ציבורי findByNamedQuery (מחרוזת searchTerm, Pageable pageable); }

שימו לב כיצד אנו מגדירים שלוש שיטות כאן, על גבי ה- API המסופק על ידי מאגר SolrCrud. נדבר על אלה בחלקים הבאים.

שימו לב גם כי ה- Product.findByNamedQuery המאפיין מוגדר בקובץ השאילתה בשם Solr solr-named-queries.properties בתיקיית הכיתה:

Product.findByNamedQuery = id: *? 0 * או שם: *? 0 *

2.4. תצורת Java

כעת נחקור את תצורת האביב של שכבת ההתמדה Solr:

@Configuration @EnableSolrRepositories (basePackages = "com.baeldung.spring.data.solr.repository", בשםQueriesLocation = "classpath: solr-named-queries.properties", multicoreSupport = true) @ComponentScan מחלקה ציבורית SolrConfig {@BeanClient solclient () {להחזיר HttpSolrClient חדש ("// localhost: 8983 / solr"); } @Bean SolrTemplate ציבורי solrTemplate (לקוח SolrClient) זורק חריג {להחזיר SolrTemplate חדש (לקוח); }}

אנחנו משתמשים @EnableSolrRepositories לסרוק את החבילות למאגרים. שים לב שציינו את המיקום של קובץ מאפייני השאילתה הנקוב והפעלנו תמיכה מרובת ליבות.

אם ריבוי ליבות אינו מופעל, אז כברירת מחדל, Spring Data תניח כי תצורת Solr מיועדת לליבה אחת. אנו מאפשרים כאן ריבוי ליבות, רק לצורך התייחסות.

3. אינדקס, עדכון ומחיקה

על מנת לחפש מסמכים ב- Solr, יש להוסיף את המסמכים לאינדקס למאגר Solr.

להלן דוגמאות אינדקסים מסמך מוצר במאגר Solr פשוט באמצעות SolrCrudRepository שיטת שמירה:

טלפון מוצר = מוצר חדש (); phone.setId ("P0001"); phone.setName ("טלפון"); productRepository.save (טלפון);

עכשיו בואו נחזור ונעדכן מסמך:

מוצר retrievedProduct = productRepository.findOne ("P0001"); retrievedProduct.setName ("טלפון חכם"); productRepository.save (retrievedProduct);

ניתן למחוק מסמכים פשוט על ידי קריאה לשיטת המחיקה:

productRepository.delete (retrievedProduct);

4. שאילתות

בואו נבדוק כעת טכניקות שאילתה שונות הניתנות על ידי ממשק ה- API של Spring Data Solr.

4.1. שם השיטה יצירת שאילתות

שאילתות מבוססות על שם השיטה נוצרות על ידי ניתוח שם השיטה כדי ליצור את השאילתה הצפויה לביצוע:

רשימה ציבורית findByName (שם מחרוזת);

בממשק המאגר שלנו, יש לנו findByName שיטה המייצרת שאילתה על בסיס שם השיטה:

רשימה retrievedProducts = productRepository.findByName ("טלפון");

4.2. שאילתה עם @שאילתא ביאור

ניתן ליצור שאילתות חיפוש של Solr על ידי השאילתה ב- @שאילתא ביאור של שיטה. בדוגמה שלנו findByCustomQuery מסומן עם @שאילתא ביאור:

@Query ("id: *? 0 * או שם: *? 0 *") דף ציבורי findByCustomQuery (מחרוזת searchTerm, Pageable pageable);

בואו נשתמש בשיטה זו כדי לאחזר מסמכים:

תוצאת עמוד = productRepository.findByCustomQuery ("טלפון", PageRequest חדש (0, 10));

על ידי קריאה ל findByCustomQuery ("טלפון", PageRequest חדש (0, 10)) אנו משיגים את העמוד הראשון של מסמכי המוצר המכילים את המילה "טלפון" בכל אחד מתחומיו תְעוּדַת זֶהוּת אוֹ שֵׁם.

4.3. שמו שאילתה

שאילתות בשם דומות לשאילתות עם @שאילתא ביאור למעט השאילתות מוצהרים בקובץ מאפיינים נפרד:

@Query (name = "Product.findByNamedQuery") דף ציבורי findByNamedQuery (מחרוזת searchTerm, Pageable pageable);

שים לב שה- @שאילתא אין צורך בהערה אם המפתח (findByNamedQuery) של השאילתה בקובץ המאפיינים תואם לשם השיטה.

בואו אחזור כמה מסמכים בשיטת השאילתה בשם:

תוצאת עמוד = productRepository.findByNamedQuery ("one", PageRequest חדש (0, 10));

5. מסקנה

מאמר זה הוא מבוא מהיר ופרקטי ל- Spring Data Solr, המכסה את התצורה הבסיסית, מגדיר מאגרים ובאופן טבעי - שאילתות.

וכמו תמיד, הדוגמאות המשמשות כאן זמינות כפרויקט לדוגמא ב- Github.


$config[zx-auto] not found$config[zx-overlay] not found