![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jak ustawiać sortowanie, by Sphinx uwzględnił także kolejność występowania szukanego słowa w rekordach?
Czyli jak wyszukam "lampa" - żeby najpierw pokazywał rekordy, w których to słowo znajduje się jak najbliżej początku, potem rekordy, w których znajduje się jako drugie w kolejności itd. W tej chwili mam po prostu:
Wersja: Sphinx 1.10-beta (r2420; Jul 19, 2010) działa pod kontrolą CentOS. Ten post edytował Walian 19.10.2010, 08:33:11 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Ale w takim razie nie jest Ci potrzebny parametr trafności wyszukiwania skoro z góry skazujesz sortowanie na "bliskość" wystąpieniA słowa.
1) nie wiem czy jest to możliwe - podejrzewam, że w bardzo ograniczonym stopniu. Poza tym na liście funkcji http://sphinxsearch.com/docs/current.html#...yntax#sort-expr nie znalazłem funkcji do wyszukiwania pozycji w tekście 2) jeżeli jest to w jakiś sposób możliwe to jak chcesz uwzględnić stemming? w skrócie, nie kombinujmy (IMG:style_emoticons/default/smile.gif) Parametr trafność został wymyślony przez naprawdę niezłych ludzi więc po co to "poprawiać"? Ten post edytował wookieb 19.10.2010, 10:16:36 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
To w zasadzie nie był mój pomysł, tylko szefa, który chciał by wyszukiwarka zwracała jak najlepsze wyniki. No ale wygląda na to, że masz rację.
Tak dokładne wyszukiwanie nie jest dla nas koniecznością, ważniejsza się tu okazuje kosmiczna wydajność "Świnksa", dzięki której będę mógł przyspieszyć nie tylko wyszukiwanie produktów, ale także ich przeglądanie, filtrowanie i zliczanie znalezionych produktów - wyświetlane obok nazw kategorii ;-) Ten post edytował Walian 19.10.2010, 11:45:24 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Do tego celu o którym mówisz znacznie lepiej wypada (pod względem wydajności) Solr (dzięki FACET-om). Ale to oczywiście kwestia gustu.
Ten post edytował wookieb 19.10.2010, 11:51:48 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie sprawdzałem tego jeszcze (Solr to moduł do Apache tak?), ale już wystarczająco czasu spędziłem nad ogarnięciem Sphinx-a. Jakbym teraz powiedział, że chcę wypróbować coś innego to... sam rozumisz (IMG:style_emoticons/default/biggrin.gif)
Ale na pewno kiedyś sprawdzę. Wypada znać wszystko. Na pewno sprawdzę też Lucene. Póki co wdrożę Sphinx-a. I tak na razie spełnia wszystkie nasze wymagania. Dzięki za odpowiedzi. |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Solr jest oddzielnym oprogramowaniem tylko, że pod opieka fundacji Apache. Solr aktualnie ściśle współpracuje z LUCENE i tak naprawdę jest od niej zależny. Trwają prace nad stałym połączeniem obu narzędzi (o ile pamiętam ma wyjść pod nazwą Solr 4.0).
Jak używasz sphinxa to pamiętaj, że po przekroczeniu pewnej ilości produktów (a dokładniej więcej niż ustawienie max_matches w sphinx) będziesz zmuszony do zmiany konfiguracji. Ale napominam o tym "tak tylko" (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam obecnie ustawione 10000 i taka ilość wydaje mi się być wystarczającą. Jak do tej pory najwięcej podstron (po 20 produktów na jednej) to było grubo ponad 6 tyś. więc jakiś zapas jest i raczej się drastycznie nie zmniejszy. Jest około 3x tyle co być powinno.
A wiesz coś na temat Lucene? Korzystałeś z tego? Może potrafiłbyś przyrównać Solr czy samego (samej?) Lucene do Sphinx-a by pokazać różnice? Pytam ot tak - z ciekawości. O Lucene wiem tylko tyle, że została napisana w Javie (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Sphinx nie ma replikacji, Solr tak.
Sphinx jest mniej wydajny od Solra. Solr jest o wiele bardziej konfigurowalny jeżeli chodzi o wszystkie operacje wyszukiwania pełnotekstowego. Ograniczenie ilości wyników max_matches jest dość wkurzające a podane zbyt dużej wartości spowoduje problemy z wydajnością. Solr jest niesamowicie prosty w obsłudze. Solr posiada FACETy czyli np twoje kategorie + ilość rekordów znalezionych. Różnic jest znacznie więcej. Wystarczy, że poszukasz porównań w googlach (IMG:style_emoticons/default/smile.gif) Generalnie byłem zwolennikiem Sphinxa dopóki nie poznałem SOLR-a |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
No to widzę, że powinienem się Solrem poważnie zainteresować.
Dzięki za informacje ;-) Edit: Mam jeszcze jeden problem. Używam SPH_MATCH_ANY. Mam m.in taki produkt: Kod Apple MacBook Pro 15"" 2.66GHz/4GB/320GB/GeForce 9600M GT/SD Gdy go wyszukuję poprzez wpisanie: Kod geforce 9600* to mi go znajduje, natomiast używając poniższych kombinacji już nie: Kod apple geforce Kod apple geforce* Kod apple* geforce* Kod apple * geforce * Kod apple geforce 9600m Kod apple geforce 9600m* Kod geforce apple* Widocznie zbyt restrykcyjnie szuka. Da się to jakoś obejść nie tracąc znacząco na dokładności sortowania? Edit: Zauważyłem, że takie coś daje rade: Kod geforce* | apple* Ale czy to dobry pomysł? EDIT: Widzę, że to nie jest dobre rozwiązanie. Żałuję, że nie sprawdziłem na samym początku czy będzie taki problem w Sphinx-ie. Jeśli próbuję znaleźć np: Kod ASUS GeForce 9500GT 1024MB DDR2 / 128bit DVI / HDMI PCI-E (550 / 800) wpisując: Kod asus geforce* to Sphinx go znajduje. Jak wpiszę słowa w odwrotnej kolejności to nie znajduje. Wpisanie: Kod geforce | asus* Daje zbyt dużo wyników tzn zwraca na początku: Kod ASUS P5E-VM HDMI Intel G35 Socket 775 a pierwszy GeForce-em jaki znajduje się na liście wyników (dużo niżej) to: Kod Asus ENGTS250 GeForce GTS 250 CUDA 1GB DDR3 (256bit),2xDualDVI, HDCP, BOX Wpisanie: Kod geforce & asus* Ani trochę nie zmienia wyników! Czyżby bug? Jakieś pomysły? Ten post edytował Walian 21.10.2010, 12:39:45 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
a po jakim parametrze sortujesz?
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chyba już wiem co było nie tak - miałem w kodzie:
Ale ja zakręcony jestem :/ Wyrzuciłem już to escape-owanie. Teraz wpisanie: Kod geforce* & asus* Zwraca: Kod ASUS M3N WS, GeForce 8200, DualDDR2-1066, SATA2, RAID, GBLAN, VGA, FW, ATX (M3N WS) Więc chyba jest dobrze. Dzięki za odpowiedź - Twoje pytanie sprawiło, że znowu zacząłem grzebać w kodzie i znalazłem przyczynę (IMG:style_emoticons/default/smile.gif) EDIT: Prawie dobrze, jest jeszcze problem z wyszukiwaniami: Kod 5850* Nic nie zwraca, a jest taki produkt: Kod Gigabyte Radeon HD 5850 GPU, 1GB DDR5 (256bit), PCI-E, HDMI DualDVI D-sub, BOX Po wpisaniu: Kod 9600gt* Znajduje tylko produkt: Kod TRILINE NOWY ! TRILINE ALIVIO 31A-7400H7 (E7400/ 3GB/ 9600GT 1GB/ 500GB/ DVDRW/WIN 7 PREMIUM) a są jeszcze: Kod ZOTAC GF 9600GT CUDA,ECO Edition, 1GB DDR3 (256bit), HDTV DualDVI, PCI-E, BOX Gigabyte GeForce 9600GT CUDA, 1GB GDDR3 (256bit),2x DVI-I HDMI HDCP, PCI-E, BOX Gigabyte GeForce CUDA 9600GT, 1GB GDDR3 (256bit), HDMI DVI D-SUB, PCI-E, BOX Czyżby ten problem dotyczył tylko liczb? EDIT: Ok sprawa załatwiona - problem stanowiło źle ustawione "ignore_chars" w konfiguracji indeksu (IMG:style_emoticons/default/smile.gif) Ten post edytował Walian 22.10.2010, 08:42:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 01:04 |