Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen SWISH-LIBRARY komutudur.
Program:
ADI
SWISH-LIBRARY - Swish-e C kitaplığı arabirimi
GENEL BAKIŞ
Swish-e arama kodunun arayüzündeki C kitaplığı. Gömmek için bir yol sağlar
Uygulamalarınıza çevirin. Bu API, Swish-e sürüm 2.3'e dayanmaktadır.
Not: Bu, Swish-e sürüm 2.3'ten itibaren YENİ bir API'dir. C dili arayüzü değişti
Swish-e için perl arayüzü gibi. Yeni Perl arayüzü SWISH::API modülüdür ve
Swish-e dağıtımına dahildir. Eski SWISHE perl modülü yeniden yazıldı
yeni API ile çalışmak için. SWISHE perl modülü artık Swish-e'ye dahil değildir
dağıtım, ancak Swish-e web sitesinden indirilebilir.
Kütüphanenin avantajı, indeks dosyalarının veya dosyalarının bir kez açılabilmesi ve
açık dizinde yapılan birçok sorgu. Bu, çatallamak ve çalıştırmak için gereken başlatma süresinden tasarruf sağlar
swish-e ikili dosyası ve dizin dosyasını açmanın pahalı zamanı. Bazı kıyaslamalar
hızında üç kat artış göstermiştir.
Dezavantajı, programınızın artık içinde daha fazla kod ve veriye sahip olmasıdır (dizin tabloları
oldukça fazla bellek kullanın) ve swish'te ölümcül bir hata meydana gelirse,
programı. Bunlar, özellikle swish'i bir web sunucusuna gömüyorsanız, düşünülmesi gereken şeylerdir.
isteklere hizmet eden birçok işlemin olduğu Apache gibi.
Kütüphane hakkında bilgi edinmenin en iyi yolu Swish-e ile birlikte gelen iki dosyaya bakmaktır.
Kütüphaneden yararlanan dağıtım.
kaynak/libtest.c
Bu dosya, bir C programını Swish-e kitaplığına bağlamaya ilişkin temel bir genel bakış sunar. Olumsuz
bu örnekte mevcut tüm işlevler kullanılmıştır, ancak size iyi bir
swish-e ile bir C programı oluşturmaya genel bakış.
libtest chdir'i src dizininde oluşturup çalıştırmak ve komutları çalıştırmak için:
$ libtest yap
$ ./libtest [dizin dosyasının isteğe bağlı adı]
Arama kelimeleri istenecektir. Kullanılan varsayılan dizin index.swish-e.
Bu, dizin dosyalarının bir listesini tırnak korumalı bir dizeye yerleştirerek geçersiz kılınabilir.
$ ./libtest 'index1 index2 index3'
perl/API.xs
The API.x'ler dosya, C kitaplığına yönelik bir Perl "xsub" arabirimidir ve
SWISH::API Perl modülü. Bu, Swish-e kitaplığına nesne yönelimli bir arayüzdür.
ve çeşitli arama "nesnelerinin" C çağrıları tarafından nasıl oluşturulduğunu ve bunların nasıl oluşturulduğunu gösterir.
ihtiyaç kalmadığında imha edilir.
Takma the Swish-e kütüphane
Swish-e kitaplığı, Swish-e'yi oluştururken "make install" komutunu çalıştırdığınızda yüklenir. Numara
ek kurulum adımları gereklidir.
Kitaplık, "swish-eh" başlık dosyasından ve "libswish-e.*" kitaplığından oluşur.
platformunuza bağlı olarak statik veya paylaşılan bir kitaplık olabilir.
Kütüphane Genel Bakış
Bir dizin dosyasına (veya dizin dosyalarına) ilk kez eklediğinizde, size bir "swish tutamacı" döndürülür.
Tutamaçtan, parametreleri tutan bir veya daha fazla "arama nesnesi" yaratırsınız.
sorgu dizesi, sıralama düzeni, arama ifadesi sınırlayıcı, sınır gibi dizini sorgulayın
parametreler ve HTML yapı bitleri. "Nesne" gerçekten sadece bir C işaretçisidir.
yapıdır, ancak onu veri ve işlevsellik içeren bir nesne olarak düşünmek yardımcı olur.
ile ilişkili.
Arama nesnesi, dizini sorgulamak için kullanılır. Bir sorgu, bir "sonuç nesnesi" döndürür. NS
sonuç nesnesi, isabet sayısını, dizin başına ayrıştırılmış sorguyu ve sonuç kümesini tutar.
Sonuçlar nesnesi, sonuç kümesindeki geçerli konumun kaydını tutar. "arayabilir"
sonuç kümesindeki belirli bir kayda (bir sonuç sayfasını görüntülemek için kullanışlıdır).
Son olarak, bir sonuç nesnesi, sonuç listesinden tek bir sonucu temsil eder. Bir sonuç nesnesi
sonucun özelliklerine erişim sağlar (dosya adı, sıralama vb.).
Sonuçlara ek olarak, saklanan başlık değerlerine erişmek için kullanılabilen işlevler vardır.
dizin dosyasında, hataları kontrol etme ve raporlama işlevleri ve birkaç yardımcı program işlevi.
Mevcut fonksiyonlar
Aşağıda Swish-e C dili API'sinde bulunan kullanılabilir işlevlerin listesi bulunmaktadır.
Bu işlevler (ve typedef'ler) şşşşşşşşşşşşşşşşşşşş başlık dosyası. Ortak
kullanılan nesneler (örn. yapılar):
SW_HANDLE - bir dizin dosyasıyla ilişkilendirilen swish tutamacı
SW_SEARCH - arama parametrelerini tutan "nesneyi" ara
SW_RESULTS - bir sonuç kümesini tutan sonuç "nesnesi"
SW_RESULT - sonucun özelliklerine erişmek için kullanılan tek bir sonuç
SW_FUZZYWORD - bulanık (sapma) kelime dönüştürme için kullanılır
Arama
SW_HANDLE SwishInit(char *IndexFiles);
Bu işlev, içinde bulunan dizin dosyalarının başlık bilgilerini açar ve okur.
IndexFiles dizesi. Dize, boşlukla ayrılmış bir dizin dosyaları listesi içermelidir.
SW_HANDLE kolum;
myhandle = SwishInit("file1.idx");
Tipik olarak, programınızın başında bir tanıtıcı açacak ve bunu yapmak için kullanacaksınız.
bir dizinde birden çok sorgu.
Bu işlev her zaman bir swish tutamacı döndürür. Hataları kontrol etmelisiniz ve
tanıtıcı tarafından kullanılan belleği hatasız hale getirin veya iptal edin.
İşte bir iptal örneği:
SW_HANDLE swish_handle;
swish_handle = SwishInit("file1.idx file2.idx");
if ( SwishError( swish_handle ))
SwishAbortLastError(swish_handle);
Ve işte hatayı yakalamanın bir örneği:
SW_HANDLE swish_handle;
swish_handle = SwishInit("file1.idx file2.idx");
if ( SwishError( swish_handle ))
{
printf("swish'e bağlanılamadı. %s\n", SwishErrorString( swish_handle ) );
SwishClose(swish_handle); /* kullanılan belleği boşalt */
0 dönmek;
}
Aynı anda birden fazla tanıtıcı etkin olabilir.
Swish-e, dizin dosyasının diskte değişip değişmediğini (örneğin,
yeniden indeksleme). Kalıcı bir ortamda (örn. mod_perl) çağıran program şunları yapmalıdır:
dizin dosyasının diskte değişip değişmediğini kontrol edin. Bunu yapmanın yaygın bir yolu,
dizin dosyalarını açmadan önce inode numarasını saklayın ve ardından dosya adını belirtin
sık sık ve inode numarası değişirse dizin dosyalarını yeniden açın.
void SwishClose(SW_HANDLE tutamacı);
Bu işlev, Swish tutamacının belleğini kapatır ve serbest bırakır. Her swish kolu
dizinde arama bittiğinde serbest bırakılmalıdır. Tutamacı kapatamamak
bellek sızıntısına neden olur.
SW_SEARCH New_Search_Object(SW_HANDLE tanıtıcı, const char *sorgu);
Yeni bir arama "nesnesi" döndürür. Arama nesnesi, kullanılan parametreleri tutar.
indeks arama Birden çok dizini sorgulamak için tek bir arama nesnesi kullanılabilir.
zamanlar. Aşağıda listelenen mevcut ayarlar, ayarlı kaldıkları için "yapışkandır".
değişene kadar arama nesnesi.
int SwishGetStructure( SW_SEARCH kaynağı);
Geçilen arama nesnesinin "yapı" bayrağını veya arama nesnesi
BOŞ.
void SwishPhraseDelimiter( SW_SEARCH srch, karakter sınırlayıcı);
Tümce sınırlayıcı karakterini ayarlar. Varsayılan çift tırnaktır.
char SwishGetPhraseDelimiter( SW_SEARCH srch);
Arama nesnesinde kullanılan tümce sınırlayıcı karakterini veya arama
nesne NULL.
void SwishSetStructure( SW_SEARCH srch, int yapısı);
Arama nesnesindeki "yapı" bayrağını ayarlar. Yapı bayrağı sınırlamak için kullanılır
HTML dosyalarının bölümlerini arar (başlık veya başlıklar gibi). Varsayılan
sınır değil. Bu, -H komut satırı anahtarının işlevselliğini sağlar.
void SwishPhraseDelimiter( SW_SEARCH srch, karakter sınırlayıcı);
Tümce sınırlayıcı karakterini ayarlar. Varsayılan çift tırnaktır.
geçersiz SwishSetSort( SW_SEARCH srch, char *sort );
Sonuçların sıralama düzenini ayarlar. Bu, ile kullanılan -s anahtarı ile aynıdır.
swish-e ikili.
void SwishSetQuery( SW_SEARCH srch, char *sorgu);
Arama nesnesindeki sorgu dizesini ayarlar. Bu genellikle gerekli değildir çünkü
arama nesnesi oluşturulurken veya bir sorgu yürütülürken ayarlanabilir.
void SwishSetSearchLimit( SW_SEARCH srch, karakter *özellik adı, karakter *düşük, karakter *hi);
Bir arama için limit parametrelerini ayarlar. -L ile aynı işlevi sağlar
komut satırı anahtarı. Arama sonuçlarında bir dizi özellik değeri belirtebilirsiniz.
içinde olmalıdır. arayabilirsin SwishSetSearchLimit() her mülk için sadece bir kez
(ancak aynı anda birden fazla mülk üzerinde sınır koyabilir).
Arama nesnesindeki diğer ayarlardan farklı olarak, aramada bir sorgu çalıştırdığınızda
aramanız gereken nesne SwishResetSearchLimit() limit parametrelerini değiştirmek veya silmek için
geçersiz SwishResetSearchLimit( SW_SEARCH srch );
tarafından belirlenen bir arama nesnesinde belirlenen sınırları sıfırlar. SwishSetSearchLimit().
geçersiz Free_Search_Object( SW_SEARCH kaynağı);
Arama nesnesini serbest bırakır. Bu, arama nesnesiyle yapıldığında çağrılmalıdır.
Genel olarak, bir arama nesnesini birden çok sorgu için yeniden kullanabilirsiniz.
aramadan hemen önce bunu ara SwishKapat().
Arama nesnesini serbest bırakmadan ve oluşturulan sonuç nesnelerini serbest bırakmadan önce serbest bırakabilirsiniz.
SW_RESULTS SwishExecute( SW_SEARCH arama, const char *sorgu);
Arama nesnesindeki parametrelere göre dizini veya dizinleri arar. bir
sonuç nesnesi. Sonuçlarda saklanan verilere erişmeye yönelik işlevler için aşağıya bakın
nesne.
Aradıktan sonra her zaman hataları kontrol etmelisiniz. SwishExecute().
SW_RESULTS SwishQuery(SW_HANDLE, const char *kelimeler);
Bu, bir arama nesnesinin oluşturulmasını atlayan bir kısayol işlevidir (aslında,
bir arama nesnesi oluşturma ve serbest bırakma ihtiyacını atlar). Bu sadece bir
sorgu dizesi; diğer arama parametreleri ayarlanamaz. Sonuçlar rütbeye göre sıralanmıştır.
Aradıktan sonra her zaman hataları kontrol etmelisiniz. SwishQuery().
Okuma ÇIKTILAR
int SwishHits( SW_RESULTS sonuçları);
Sonuçlar nesnesindeki sonuçların sayısını döndürür.
SWISH_HEADER_VALUE SwishParsedWords( SW_RESULTS, const char *index_name );
Belirtilmiş sorguyu döndürür. Kelimeler, WordCharacters tarafından bölünür ve stopwords
kaldırıldı. Ayrıştırılan sözcükler, programınızdaki arama terimlerini vurgulamak için kullanışlıdır.
"index_name", içinde sağlanan dizinin adıdır. SwishInit() işlev çağrısı.
Bir karakter ** olan SWISH_LIST türünde bir SWISH_HEADER_VALUE birleşimi döndürür. Görmek
Bu listedeki dizelere erişim örneği için src/libtest.c, ancak genel olarak
bunu bir (char **) öğesine atabilir.
SWISH_HEADER_VALUE SwishRemovedStopwords( SW_RESULTS, const char *index_name );
Giriş sorgusundan kaldırılan engellenecek sözcüklerin listesini döndürür.
Bir karakter ** olan SWISH_LIST türünde bir SWISH_HEADER_VALUE birleşimi döndürür. Görmek
Bu listedeki dizelere erişim örneği için src/libtest.c, ancak genel olarak
bunu bir (char **) öğesine atabilir.
int SwishSeekResult(SW_RESULTS, int pozisyon);
Sonuçlar listesindeki mevcut arama konumunu, sıfır konumu,
ilk kayıt (birinin ilk sonuç olduğu -b'nin aksine).
Hata durumunda konumu veya negatif bir sayıyı döndürür.
SW_RESULT SwishNextResult( SW_RESULTS );
Sonraki sonucu veya daha fazla sonuç yoksa NULL döndürür.
Döndürülen sonuç nesnesinin kullanımdan sonra serbest bırakılması gerekmez (swish'in aksine).
tanıtıcı, arama nesnesi ve sonuç nesnesi).
const char *SwishResultPropertyStr(SW_RESULT, char *özellik adı);
Bu işlev, hatalar üzerinde tekil sonuçlar döndürdüğü için çoğunlukla test için kullanışlıdır.
NULL SW_RESULT nesnesiyle çağrılırsa iptal edilir
Belirtilen özelliğin bir dize değerini döndürür.
Geçerli sonuç belirtilen özelliğe sahip değilse boş "" dizesini döndürür
atanmış.
Geçersiz özellik adında "(null)" dizesini döndürür (yani özellik adı
dizinde tanımlanmış) ve geçersiz özelliği gösteren bir hata (aşağıya bakın) ayarlar
adı.
Döndürülen dizenin serbest bırakılması gerekmez, ancak yalnızca geçerli
sonuç. Dizeyi kaydetmek istiyorsanız, yerel olarak kopyalamanız gerekir.
Tarihler, sabit kodlanmış biçim dizesi kullanılarak biçimlendirilir: "%Y-%m-%d %H:%M:%S"
Yerel zaman.
unsigned long SwishResultPropertyULong(SW_RESULT r, char *özellik adı);
İşaretsiz uzun olarak sayısal bir özellik döndürür. Sayısal özellikler her ikisi için de kullanılır
PropertyNamesNumeric ve PropertyNamesDate tipi özellikler. Tarihler şu şekilde döndürülür:
dizin oluşturulduğunda sistem tarafından bildirilen bir unix zaman damgası.
Swish-e, bir NULL SW_RESULT nesnesiyle çağrılırsa iptal edilir. SW_RESULT olmadan
nesne swish-e herhangi bir hata kodu ayarlayamaz.
Hata durumunda UMAX_LONG döndürür. Bu genellikle limitler.h içinde tanımlanır. Kontrol etmek SwishError()
(aşağıya bakın) hata türü için.
If SwishError() false (sıfır) döndürürse, bu sadece bu sonucun olmadığı anlamına gelir.
belirtilen özellik için herhangi bir veri var.
If SwishError() true (sıfır olmayan) döndürür, ardından belirtilen özellik adı
geçersiz veya istenen özellik sayısal (veya tarih) bir özellik değil (örn.
dize özelliği).
Belirli bir hata mesajının ne zaman alınacağına ilişkin aşağıya bakın. SwishError() doğru.
PropValue *getResultPropValue (SW_RESULT r, char *özellik adı, int ID);
Bu, türünden bağımsız olarak bir özelliği getirmek için düşük düzeyli bir işlevdir. Bu muhtemelen
özelliklere erişmek için en iyi işlev.
Swish-e, bir NULL SW_RESULT nesnesiyle çağrılırsa iptal edilir. Propertyname adıdır
mülkün. Kimlik, biliniyorsa mülkün kimlik numarasıdır. Kimlik normalde değil
API'de kullanılır, ancak amacı, her biri için mülk kimliğini aramaktan kaçınmaktır.
sonuç görüntülendi.
Dönüş PropValue, türü belirtmek için bir bayrak içeren bir yapıdır ve
mülkiyet değerini tutan birlik. Bayrakları ve yapısı şurada tanımlanmıştır:
şşşşşşşşşşşşşşşşşşşş
Özellik yerel olarak kopyalanmalı ve döndürülen "PropValue" değeri serbest bırakılmalıdır
arayarak freeResultPropValue() bellek sızıntısını önlemek için.
Hatada NULL döndürür. Kontrol etmek SwishError() (aşağıya bakın) hata türü için.
NULL döndürürse ancak SwishError() false (sıfır) döndürürse, bunun anlamı şudur:
sonuç, belirtilen özellik için herhangi bir veriye sahip değil.
If SwishError() true (sıfır olmayan) döndürür, ardından belirtilen özellik adı geçersiz
(yani dizin için tanımlı değil).
Belirli bir hata mesajının ne zaman alınacağına ilişkin aşağıya bakın. SwishError() doğru.
Bu işlevin kullanımına ilişkin bir örnek için Perl/API.xs'ye bakın.
geçersiz freeResultPropValue(geçersiz)
Aramadan sonra döndürülen "PropValue" değerini serbest bırakır getResultPropValue().
void Free_Results_Object(SW_RESULTS sonuçları);
Sonuç nesnesini serbest bırakır (sonuç kümesini serbest bırakır). Bu yapıldığında çağrılmalıdır
sonuçları okuma ve aramadan önce SwishKapat().
erişme the indeks üstbilgi Değerler
Her dizin dosyası, dizini tanımlayan ilişkili başlık değerlerine sahiptir. Bu işlevler
bu verilere erişim sağlar. Başlık verileri, SWISH_HEADER_VALUE birleşimi olarak döndürülür,
ve bir SWISH_HEADER_TYPE işaretçisi iletilir ve döndürülen değer,
döndürülen veri türü. Örnekler için src/libtest.c ve perl/API.xs'ye bakın.
const char **SwishHeaderNames( SW_HANDLE );
Olası başlık adlarının listesini döndürür. Bu liste tüm dizin dosyaları için aynıdır
Swish-e'nin belirli bir sürümü. Tüm başlıklara erişmenin bir yolunu sağlar
Onları programınızda listelemek zorunda kalmadan.
const char **SwishIndexNames( SW_HANDLE );
Açılan dizin dosyalarının bir listesini döndürür. Bu yalnızca belirtilen dizin dosyalarının listesidir.
içinde SwishInit() Arama. Belirli bir dosyaya erişmek için dizin dosyasının adına ihtiyacınız var.
indeksin başlık değerleri.
SWISH_HEADER_VALUE SwishHeaderValue( SW_HANDLE, const karakter *index_name, const karakter
*cur_header, SWISH_HEADER_TYPE *tür );
Verilen dizin dosyası için başlık değerini ve başlık adını getirir. çağrı setleri
döndürülen değerin türüne geçirilen "tür".
Örnekler için src/libtest.c ve perl/API.xs'ye bakın.
SWISH_HEADER_VALUE SwishResultIndexValue( SW_RESULT, const karakter *ad, SWISH_HEADER_TYPE
*tip );
bu gibi SwishHeaderValue() yukarıda, ancak bir dizin dosyası adı sağlamak yerine ve
bir swish tutamacı, bir sonuç nesnesi sağlar ve başlık değeri
sonucun ilgili dizin dosyası.
erişme Varlığınızı Meta Veri
Önceden tanımlanmış standart özelliklere ek olarak, ekleme seçeneğiniz vardır.
dizine eklenecek ve/veya döndürülen özellikler listesine eklenecek ek "meta" özellikler
her sonuç ile. içindeki MetaNames ve PropteryNames yönergeleri ile ilgili bölümlere bakın.
Bunun nasıl yapılacağına ilişkin açıklama için YAPILANDIRMA DOSYASI.
Bu işlevler, bir dizinde depolanan meta verilere erişim sağlar. onları kullanabilirsin
tüm ön bilgileri içeren bir dizin için hangi meta/özellik bilgilerinin mevcut olduğunu belirleyin.
tanımlanmış standart özellikler. Örnek için libtest.c'ye bakın.
SWISH_META_LIST SwishMetaList( SW_HANDLE, const char *index_name );
Verilen dizin dosyası için meta girişlerinin listesini boş sonlandırılmış bir dizi olarak döndürür
SW_META nesnelerinin sayısı. Belirli alanları çıkarmak için aşağıdaki işlevleri kullanın.
SW_META yapısı. Meta'lar özelliklerden farklıdır.
SWISH_META_LIST SwishPropertyList(SW_HANDLE, const char *index_name );
Bu fonksiyon aynı SwishMetaList() ancak bir dizi özelliği şu şekilde döndürür:
meta nesnelere karşı. Özellik nitelikleri, meta ile aynı şekilde çıkarılabilir
aşağıdaki işlevleri kullanan nesneler.
SWISH_META_LIST SwishResultMetaList( SW_RESULT );
bu gibi SwishMetaList() yukarıda ancak bir sonuçtan kullanılacak dizini belirler
nesne.
SWISH_META_LIST SwishResultPropertyList( SW_RESULT );
bu gibi SwishPropertyList() yukarıda ama beğen SwishResultMetaList() bir sonucu kullanır
dizin adı yerine nesne.
const char *SwishMetaName( SW_META );
Yukarıdakilerden biri tarafından döndürülen bir SW_META nesnesi verildiğinde, bu işlev
meta/mülkün adı. Belirli bir mülkün değerine erişmek için bu adı kullanabilirsiniz.
yukarıda anlatıldığı gibi.
int SwishMetaType(SW_META);
Verilen meta/özellik için veri türünü alın. Bilinen türler swish-eh'de listelenmiştir
SwishMetaID(SW_META);
Verilen meta/özellik için dahili kimlik numarasını alın. Bu kimlikler benzersizdir
dizin dosyasıdır, ancak sonuç başına benzersiz değildir.
Denetleme için Hatalar
Tüm aramalardan sonra hataları kontrol etmelisiniz. Son hata swish tutamağında saklanır
nesnedir ve yalnızca bir sonraki işleme (hata bayraklarını sıfırlayan) kadar geçerlidir.
Şu anda bazı hatalar "kritik" hatalar olarak işaretleniyor. Bu durumlarda
yok etmek (arayarak SwishKapat() işlev ) geçerli swish tutamacı. eğer varsa
kapsamdaki diğer nesneler (örneğin bir arama nesnesi veya sonuç nesnesi) önce bunları yok eder.
Kritik hata türleri src/error.c dosyasında görülebilir. Şu anda liste
içerir:
Dizin dosyası açılamadı
Bilinmeyen dizin dosyası biçimi
Dizin dosyası/dosyaları boş
Dizin dosyası hatası
Geçersiz çevirme tutamacı
Geçersiz sonuç nesnesi
int SwishError(SW_HANDLE);
Bu, bir hata koşulu varsa true değerini döndürür. olan hata numarasını döndürür.
hata durumunda sıfırdan küçük bir tam sayı. Bu, herhangi birini aramadan önce kontrol edilmelidir.
aşağıdaki diğer hata işlevleri.
const char *SwishErrorString( SW_HANDLE );
Bu, geçerli hatanın genel bir metin açıklamasını döndürür.
const char *SwishLastErrorMsg( SW_HANDLE );
Bazı durumlarda bu, mevcut hatayla ilgili ayrıntıları içeren bir dize döndürür. İçin
örnek, SwishErrorString() "Bilinmeyen meta ad" döndürebilir, ancak SwishLastErrorMsg()
bilinmeyen meta adın adını içeren bir dize döndürür.
int SwishCriticalError( SW_HANDLE );
Geçerli hata koşulu kritik bir hataysa true değerini döndürür. Kritik hatalar hakkında
mevcut nesneleri serbest bırakmalı ve aramalısınız SwishKapat() swish olabileceği gibi
istikrarsız durum.
geçersiz SwishAbortLastError( SW_HANDLE );
Bu, son hata mesajını biçimlendiren ve yazdıran bir kolaylık işlevidir ve
sonra programı iptal edin.
void set_error_handle(DOSYA *nerede);
Hataların ve uyarıların yazdırılacağı yerleri ayarlar (swish ile yazdırıldığında). tarihi için
nedenleri, swish-e ilk başladığında hatalar ve uyarılar stdout'a gönderilir.
geçersiz SwishErrorsToStderr(void);
Hataları stdout yerine stderr'e göndermek için kullanışlı bir yöntem.
Yarar fonksiyonlar
const char *SwishWordsByLetter(SWISH * sw, char *dizin adı, char c);
Girilen harfle başlayan "indexname" dizinindeki tüm kelimeleri döndürür.
Dizin dosyasının adı geçersizse NULL döndürür.
Şu anda yalnızca 8 bitlik karakterler kullanılabildiğinden bu işlev gelecekte değişebilir.
char * SwsishStemWord( SW_HANDLE sw, char *in_word );
Onaylanmamış
Bu, bir kelimeyi köküne dönüştürmek için kullanılabilir. Yalnızca orijinal Porter'ı kullanır
Stemmer.
SW_FUZZYWORD SwishFuzzyWord( SW_RESULT r, karakter *kelime);
İndeksleme sırasında seçilen bulanık moda dayalı olarak "kelime" köklerini oluşturur.
İndeksleme sırasında kullanılan bulanık mod, indeks dosyasında saklanır. Her sonuç olduğundan
belirli bir dizin dosyasına bağlı bu yöntem, dizinine dayalı bir sözcüğün köklenmesine izin verir
dosyası.
Bunun olası bir kullanımı, bir belge özetinde arama terimlerini vurgulamaktır.
verilen bir sonuca dayalı olacaktır.
Döndürülen verilere erişmek için aşağıdaki yöntemler kullanılabilir. SW_FUZZYWORD nesnesi
bellek sızıntısını önlemek için yapıldığında serbest bırakılmalıdır.
const char **SwishFuzzyWordList( SW_FUZZYWORD fw );
Kök ayırıcı tarafından döndürülen boş sonlandırılmış bir dize listesi döndürür. Çoğu durumda bu
tek bir dize olacak.
İşte bir örnek:
SW_FYZZYWORD fuzzy_word = SwishFuzzyWord( sonuç );
const char **word_list = SwishFuzzyWordList(fuzzy_word );
while ( *kelime_listesi )
{
printf("%s\n", *kelime_listesi);
kelime_listesi++;
}
SwishFuzzyWordFree(fuzzy_word);
Kök ayırıcı dizeyi dönüştürmezse (örneğin, sayısal kök
data) word_list orijinal kelimeyi içerecektir. Stemmer'ın gerçekten olup olmadığını söylemek için
kelimeyi köklendirdi, dönüş değerini kontrol edin SwishFuzzyWordError().
int SwishFuzzyWordError( SW_FUZZYWORD fw );
Bu, kök çıkarma işlemi başarılıysa sıfır döndürür, aksi takdirde
kelimenin kökten çıkmama nedenini gösteren değer. Dönüş değerleri tanımlanır
swish-e src/stemmer.h dosyasında.
Tüm kök ayırıcılar bu değeri doğru ayarlamaz. Ama o zamandan beri SwishFuzzyKelime Listesi() geri dönücek
dönüş değerinden bağımsız olarak geçerli bir dize, genellikle bu ayarı görmezden gelebilirsiniz.
İşte bu yaptığım şey.
int SwishFuzzyWordCount( SW_FUZZYWORD fw );
Çağırarak kullanılabilen kelime listesindeki dize sayısını döndürür
SwishFuzzyKelime Listesi().
Bu normalde sadece bir tanedir, ancak DoubleMetaphone durumunda bir veya iki olabilir.
(yani DoubleMetaphone bir veya iki dize döndürebilir).
const char *SwishFuzzyMode( SW_RESULT r);
Verilen sonuç için kullanılan kök ayırıcının adını döndürür (bir
dizin).
void SwishFuzzyWordFree(SW_FUZZYWORD fw);
SW_FUZZYWORD tarafından kullanılan belleği boşaltır.
Hata Raporları
Lütfen hata raporlarını Swish-e tartışma grubuna bildirin. Ayrıca geliştirmekten çekinmeyin veya
bu özelliği geliştirin.
Yazar
Orijinal arayüz: Ağustos 2000 Jose Ruiz [e-posta korumalı]
Güncelleme: 22 Ağu 2002 - Bill Moseley
Swish-e sürüm 2.3 için yeniden tasarlanan arayüz 17 Ekim 2002 - Bill Moseley
belge Bilgi
$Kimlik: SWISH-LIBRARY.pod 1906 2007-02-07 19:25:16Z moseley $
.
onworks.net hizmetlerini kullanarak SWISH-LIBRARY'yi çevrimiçi kullanın