2010-06-02 25 views
11

ben merak ediyorum bu yüzdenSolr - Yakınlık Arama kullanarak ifadeler

"Government Spending" ~2 

gibi birbirinin bir specifeid aralığında kelimeleri aramak için oldukça sık solr yakınlığı aramayı kullanın kullanarak bir yakınlık arama yapmak için bir yol var bir cümle ve bir kelime veya iki cümle. Mümkün mü? Eğer öyleyse sözdizimi nedir? Peşin

Teşekkür Ruth

cevap

14

Bu "biraz" yapılabilir gibi görünüyor.

This is more about traffic between Solr servers themselves 

"more traffic between solr" ~2

"more about between solr" ~2

çalıştığını düzeni değişir bile:

"more about solr between" ~2" ~2

Ama birbirinden çok uzak ve çalışması duruyor:

bu metni düşünün

"more about servers themselves" ~2

Bu işe yaramazsa, bunu yapan özel bir istek işleyicisi yapmak için çok da zor olmayacaktır. Yeni bir sözdizimi tanımlamanız gerekebilir, belki de ("phrase one" "phrase two") ~2 gibi bir şey. Eğer shingling ve sadece "cümle bir" ve başka bir yakınlık var "deyim iki" başka bir belirteci olan bir Lucene sorgusu oluşturmak, sanırım çalışacağını düşünüyorum. (tabii ki lucene java çağrısını yapmanız gerekecek, sadece sorguyu elden kaldıramazsınız (bu http://lucene.apache.org/java/2_2_0/api/index.html'u okuyun)). Daha sonra bir sözcüğü veya ifadeler kullanarak Solr yakınlık arama gerçekleştirmek için bir yol keşfettiler kutunun dışında

+0

O yardımcı olacak, teşekkürler – Ruth

+0

np. İyi şanslar! Bunun işe yarayıp yaramadığını bilmek harika olurdu. – mlathe

10

,

örneğin aşağıya bakınız. 3 kelimelerle:

"(kelime1) (kelime2) (word3)" ~ 10

örn. 2 cümleleri ile: (not çift tırnak kaçmış gerekiyor)

"(\" phrase1 \ ") (\" phrase2 \ ")" ~ 10

6

Solr 4 beri SurroundQueryParser ile mümkündür.

E.g.

3W(phrase W one, phrase W two) 

"ifade one" 5 kelimelerin yakınına "ifadesini iki" sorgulamak için: "sıralı iki" değil ayrıca 3 sözcükten sonra "ifadesini biri" izler nerede sorgulamak için

5N(phrase W one, phrase W two)